3

以下のコードの何が問題なのかわかりません。何もない場合はnullを出力しています。

出力:null This is one. This is two. This is three. This is four five six. seven? null

ファイルの内容:

This is one.
This is two.
This is three.
This is four
five
six.
seven?

これに関する助けがあれば大歓迎です!

try (BufferedReader br = new BufferedReader(new FileReader(filename))) {

    String cLine="";
    while ((cLine = br.readLine()) != null) {
        content+= cLine;

    }
} catch (IOException e) {
    e.printStackTrace();
}

System.out.println(content);
4

3 に答える 3

7

最初contentnull. 確かに、それは最後のものを説明していません...私の推測ではnull、最後に出力を見たので、実際にはバグを修正したと思います。それかあなたのファイルのどちらかが実際null最後にあります。content( 「」に初期化してテストしましたが、問題ありません。)

ただし、すべての改行を削除していて、区切り文字に置き換えていないことに気付いていますか? したがって、「x」、「y」、および「z」の行を含むファイルは、単に「xyz」になります。

さらに、StringBuilder文字列連結ではなく使用を検討してください。常に文字列をコピーする必要がないため、より効率的です。

于 2013-02-28T20:19:44.440 に答える
0

ただのコメント...

このtryの構文を知りませんでした。最初はタイプミスだと思っていましたが、実際に機能することがわかりました(コンパイルしてコードを実行しました)。

私はそれがいつもだと思っていました: { .... .... .... } catch() {}

さらに読むと、これはJava 7 の新機能であることがわかりました。

于 2013-02-28T21:30:59.257 に答える
-2

Java を使い始める場合は、もっと簡単なことをお勧めします...代わりにファイルでスキャナーを使用するなどです。次のことを考えてみてください。

Scanner fileRead = new Scanner(fileName);

while ( fileRead.hasNextLine() ) {
    System.out.println( fileRead.nextLine() );
}

とにかく私の提案。

于 2013-02-28T20:22:07.150 に答える