2016-08-03 14 views
-1

私のアプリの内部ストレージに保存されているファイルの内容を印刷しようとしていますが、何か奇妙なことが起こります。Android:ファイルの内容を正しく印刷できない

これは、関数である:私は実行すると

public void print() throws IOException { 

    FileInputStream fin = fileContext.getApplicationContext().openFileInput("myfile"); 
    System.out.println("File Found"); 
    int c; 
    String temp = ""; 
    while ((c = fin.read()) != -1) { 
     temp = temp + Character.toString((char) c); 
     System.out.println(temp); 
    } 
    System.out.println(temp); 
    System.out.println("Please Print Something To Test"); 
    fin.close(); 

しばらくのcicle内のアプリケーションのSystem.outは完璧に動作します..しかし、しばらくのcicle外Systm.out.println(temp)はまったく呼び出されません。
最も奇妙なことは、System.out.println("Please Print Something To Test");が正しく呼び出されていることです。 問題は何か、私は何か間違っているのですか?

EDIT:これはdublicateではありません..私は、他のすべてのスレッドを読んでいると、これは誰もが、あなたがこの方法を使用して、ファイルから読み取るしようとすることができます

+2

'temp'は" "なので、なぜ表示されません。例外がスローされると、finは決して閉じられないので、finallyブロックでリソースを閉じる必要があります。 – m0skit0

+1

私は、マークされた重複がこの質問に全く答えないと感じません。単に側面の問題。 @ m0skit0コメントはそれによく答える。 Iveは再オープンのためにフラグを立てます – Doomsknight

+0

@ m0skit0しかし、tempはwhile cicleの中に埋め込まれています。そして、最後に完全な文字列で埋めなければなりません。 –

答えて

0

がなかったことを特定のケースである:

File file = new File("myfile"); 
FileInputStream fis = null; 

try { 
    fis = new FileInputStream(file); 

    int content; 
    while ((content = fis.read()) != -1) { 
     // convert to char and display it 
     System.out.print((char) content); 
    } 

} catch (IOException e) { 
    e.printStackTrace(); 
} finally { 
    try { 
     if (fis != null) 
      fis.close(); 
    } catch (IOException ex) { 
     ex.printStackTrace(); 
    } 
} 
+1

このように私は私の問題を解決することはできません..私は最後の文字列を印刷せずに文字列の束を中にしたいと思います。 –

+0

うーん。すべての文字を印刷するのではなく、arraylistまたは文字配列に追加するだけです。そしてそれをループの外側に印刷します。私はそれがあなたのために簡単だと思う:) – alway5dotcom

関連する問題