2017-01-29 26 views
2

テキストファイルからの読み書きに問題があるようです。テキストの読み書きは完了していませんか?

2つの異なるファイルを持っているうちに、コンテンツを印刷しても、テキストファイルと同じに見えません。

私は、+と - を加えずに、bw.close()を追加しようとしました。代わりにスキャナを使用しようとしましたが、何も印刷されませんでした。

何とか変更できますか?あなたが二回bw.readLine()を使用している

private void readFromFile(File cf2) throws IOException, Exception { 

    FileReader fr = new FileReader(cf2); 
    try (BufferedReader bw = new BufferedReader(fr)) { 
    System.out.println("Wait while reading !"); 

    while(bw.readLine() != null) 
    s1 += bw.readLine(); 
    System.out.println(s1); 
    bw.close(); 
    } System.out.println("File read !"); 
    } 

答えて

1

半分をnullためのデータをチェックするために使用され、残りの半分は、s1に追加されます。だからあなたは入力の一部だけを得るのです。このようなループを作り、あなたのコードを修正するには

while (true) { 
    String s = bw.readLine(); 
    if (s == null) break; 
    s1 += s; 
} 

しかし、これはひどく非効率的です。あなたはStringBufferを使用して、より良いオフに次のようになります。

StringBuffer sb = new StringBuffer() 
while (true) { 
    String s = bw.readLine(); 
    if (s == null) break; 
    sb.append(s); 
    // Uncomment the next line to add separators between lines 
    // sb.append('\n'); 
} 
s1 = sb.toString(); 

注ファイルから'\n'のシンボルのどれもが、出力文字列にならないだろうと。区切り記号を追加するには、上記のコードでコメント行のコメントを外します。

+0

私はそれをStringBufferと共に使用しようとしましたが、うまくいかないようです。それがなければうまくいく。ありがとうございました。 –

1

、魔女は二行を消費しますが、s1に彼らの唯一のたびに追加されます。あなたのreadLine通話の試し

String line; 
while((line = bw.readLine()) != null) 
    s1 += line; 
System.out.println(s1); 
1

readline()を2回呼び出すと、2行おきにしか取得できません。

private void readFromFile(File cf2) throws IOException, Exception { 

    FileReader fr = new FileReader(cf2); 
    try (BufferedReader br = new BufferedReader(fr)) { 
     System.out.println("Wait while reading !"); 
     StringBuilder sb = new StringBuilder(); 
     String s; 
     while((s = br.readLine()) != null) { 
      sb.append(s); 
     } 
     System.out.println(sb.toString()); 
    } 
    System.out.println("File read !"); 
    } 

あなたはそれを試す - と - リソースによって行われるためbrを閉じる必要はありません。

関連する問題