2012-08-16 185 views
1

我正尝试从我的java代码读取csv文件。使用下面的代码段:使用BufferedReader读取CSV文件导致读取替代行

public void readFile() throws IOException { 
    BufferedReader br = new BufferedReader(new FileReader(fileName)); 
    lines = new ArrayList<String>(); 
    String newLine; 
    while ((newLine = br.readLine()) != null) { 
     newLine = br.readLine(); 
     System.out.println(newLine); 
     lines.add(newLine); 
    } 
    br.close(); 
} 

我从上面的代码段中得到的输出是每个替代线[第二,第四,第六行]被读出并通过readLine()方法返回。我不确定为什么存在这种行为。如果我在阅读csv文件时丢失了某些东西,请纠正我。

+3

接受您以前的问题的良好答案。这是对帮助你的人的回报。 – alex 2012-08-16 15:11:42

回答

1

您需要删除的第一行循环体 newLine = br.readLine();

6

第一次你阅读时不用在while环路进行处理,然后你又读,但这个时候你”重新处理它。 readLine()方法读取一行并将阅读器指针移到文件中的下一行。因此,每次使用此方法时,指针都会增加一个,指向下一行。

此:

while ((newLine = br.readLine()) != null) { 
     newLine = br.readLine(); 
     System.out.println(newLine); 
     lines.add(newLine); 
    } 

应改为此:

while ((newLine = br.readLine()) != null) { 
     System.out.println(newLine); 
     lines.add(newLine); 
    } 

因此读取线和处理它,而不读取另一行,然后处理。

+1

谢谢Mike,指出问题并解决问题。我做了更正,我看到了预期的输出。 – prakashjv 2012-08-17 05:02:33

+1

**谨慎解释downvote ** – GingerHead 2014-06-16 09:07:31