意外的缓冲读取器行为:跳过奇数行

时间:2014-03-30 23:17:06

标签: java bufferedreader eof

我遇到了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“文件结束”?

真正感谢任何见解

谢谢!

1 个答案:

答案 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'
}