我的代码需要读取文件的全部内容。目前我正在使用以下代码:
BufferedReader r = new BufferedReader(new FileReader(myFile));
while (r.ready()) {
String s = r.readLine();
// do something with s
}
r.close();
如果文件当前为空,则s为null,这是不好的。是否有任何具有atEOF()方法或等效方法的Reader?
public int read() throws IOException
返回:
读取的字符作为0到65535(0x00-0xffff)范围内的整数,如果已到达流的末尾,则返回-1。
因此,在Reader中应该像这样检查EOF
// Reader r = ...;
int c;
while (-1 != (c=r.read()) {
// use c
}
String s;
while (null != (s=br.readLine())) {
// use s
}
因为 readLine() 在遇到文件结束符时会返回 null。
public static boolean eof(Reader r) throws IOException {
r.mark(1);
int i = r.read();
r.reset();
return i < 0;
}
Reader
支持mark()
和reset()
时才会。 - user207421ready() 方法不起作用。您必须从流中读取并检查返回值,以查看是否已到达 EOF。
你所尝试做的标准模式是:
BufferedReader r = new BufferedReader(new FileReader(myFile));
String s = r.readLine();
while (s != null) {
// do something with s
s = r.readLine();
}
r.close();
BufferedReader.readLine()
的 JavaDoc 表示它返回“包含行内容的字符串...或 null(如果已到达流的末尾)”。 - Raedwaldnull
作为字符串,会发生什么?我无法读取完整的文件,这可能是原因吗? - uniruddh