3

最後の行には何も含まれていませんが、戻りませんnull。コードは次のとおりです

を使用してデバッグするとき、デバッグ モードでEclipseline= ""たのですが、これを防ぐにはどうすればよいですか

BufferedReader br = new BufferedReader(new FileReader(file));
String line;
while ((line = br.readLine()) != null) {
   // process the line.
}
br.close();
4

4 に答える 4

6

空行は行なので、そのまま返されます。

できることは、処理する前に行が空かどうかを確認することです。

BufferedReader br = new BufferedReader(new FileReader(file));
String line;
while ((line = br.readLine()) != null) {
   if (!line.isEmpty()) {
       // process the line.
   }
}
br.close();
于 2013-02-19T15:36:28.143 に答える
4

BufferedReader.readLine() メソッドは、ファイルの終わりに到達すると null を返します。

あなたのプログラムは、ファイルの最後に到達する前にファイル内の行を読み取っているようです。終了の条件は、行が null で、空の文字列が null ではないため、ループして終了しないことです。

于 2013-02-19T15:36:14.117 に答える
2

nulll=なし。""=空。最後の行が空の場合、「」が必要です。次の行はnullである必要があります。

そこから、空性をテストするか(appache StringUtils isEmptyが好きです)、処理する前にファイルから最後の\nを削除できます。

于 2013-02-19T15:40:58.210 に答える
2

行が単一の改行で構成される場合、lineStringになりますが、readLinenull は返されません。readLineファイルの最後に到達すると、null のみが返されます。

于 2013-02-19T15:36:22.667 に答える