我遇到了BufferedReader非常奇怪的行为。我想要读取整个文件,但它只读取所有其他行。
例如下面的文件
1 //忽略最左边的空格 - 不应该存在 2
3
4
5
6
将输出
2
4
6
以下是我的一些代码......
fileRead = new BufferedReader(new InputStreamReader( new FileInputStream(file)));
public void scan(){
if (fileRead != null){
try{
while ((fileRead.readLine()) != null){
String line = fileRead.readLine();
String abcLine = line;
System.out.println(line);
}
}catch(IOException e) {
System.out.println("Line can not be read");
}
}else{ System.out.println("Can not Read - File Not Found"); }
}
我最好的选择是错误在while语句中。这是确保的正确方法吗? 你读到文件,直到你达到EOF“文件结束”?
真正感谢任何见解
谢谢!
答案 0 :(得分:2)
每次循环时你都会读两行。您当前的代码是:
while ((fileRead.readLine()) != null){ // reads a line, ignores it
String line = fileRead.readLine(); // reads another line, stores in 'line'
... // do stuff with 'line'
}
每次拨打readLine()
都会读取一行。你可能想要更像的东西:
String line;
while ((line = fileRead.readLine()) != null) {
... // do stuff with 'line'
}