2012-08-16 186 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