8

私のコードはすべてのファイルを読み込む必要があります。現在、次のコードを使用しています。

BufferedReader r = new BufferedReader(new FileReader(myFile));
while (r.ready()) {
  String s = r.readLine();
  // do something with s
}
r.close();

ただし、ファイルが現在空の場合sはnullであり、これは適切ではありません。方法や同等Readerのものはありますか?atEOF()

4

4 に答える 4

5

ドキュメントによると:

public int read() throws IOException
戻り値:0〜65535(0x00-0xffff)の範囲の整数として読み取られた文字、またはストリームの終わりに達した場合は-1。

したがって、リーダーの場合は、次のようにEOFに対してチェックする必要があります。

// Reader r = ...;
int c;
while (-1 != (c=r.read()) {
    // use c
}

BufferedReaderとreadLine()の場合、次のようになります。

String s;
while (null != (s=br.readLine())) {
    // use s
}

readLine()はEOFでnullを返すためです。

于 2015-02-27T09:08:13.987 に答える
3

この関数を使用します:

public static boolean eof(Reader r) throws IOException {
    r.mark(1);
    int i = r.read();
    r.reset();
    return i < 0;
}
于 2015-10-02T04:38:27.500 に答える
1

あなたがやろうとしていることの標準的なパターンは次のとおりです。

BufferedReader r = new BufferedReader(new FileReader(myFile));
String s = r.readLine();
while (s != null) {
    // do something with s
    s = r.readLine();
}
r.close();
于 2010-09-15T01:39:52.320 に答える
0

ready()メソッドは機能しません。ストリームから読み取り、戻り値をチェックして、EOFにいるかどうかを確認する必要があります。

于 2010-09-15T02:08:59.667 に答える