我有一个程序,我使用的方法之一是计算一个.txt文件的行数,并返回一个整数值,问题是当我执行它的时候,尽管我写了if my line is == null while必须停止,while循环继续运行,忽略它得到的空值。
我不知道该怎么解决。
private int sizeOfFile (File txt) {
FileReader input = null;
BufferedReader count = null;
int result = 0;
try {
input = new FileReader(txt);
count = new BufferedReader(input);
while(count != null){
String line = count.readLine();
System.out.println(line);
result++;
}
} catch (FileNotFoundException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
} finally {
try {
input.close();
count.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
return result;
}
当它检测到空值时,它必须停止,这意味着没有更多的行,但它继续前进。
2条答案
按热度按时间ddhy6vgd1#
当你示例化一个
BuffereReader
并将其赋值给count
时,count
将总是非空的,因此将满足while循环:相反,使用以下代码,其中每行都将被读取并检查是否为空,如果为空,则程序将退出。
如果您使用的是JDK-1.8,则可以使用
Files
API来缩短代码:bogh5gae2#
count
是你的BufferedReader
,你的循环应该在line
上!比如,同样,你应该使用
try-with-Resources
来close
你的资源(而不是finally
块)。你可以更习惯地编写while
循环。比如,