使用BufferedReader读取CSV文件,导致读取备用行

pra*_*hjv 1 java csv

我正在尝试从我的java代码中读取一个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();
}
Run Code Online (Sandbox Code Playgroud)

我从上面的代码得到的输出是每个替代行[第2,第4,第6行]被方法读取并返回readLine().我不确定为什么会出现这种行为.如果我在阅读csv文件时遗漏了某些内容,请纠正我.

Gin*_*ead 6

你第一次读取这一行而没有在while循环中处理它,那么你再次阅读它,但这次你正在处理它.readLine()方法读取一行并将读取器指针移动到文件中的下一行.因此,每次使用此方法时,指针将增加一个指向下一行的指针.

这个:

 while ((newLine = br.readLine()) != null) {
        newLine = br.readLine();
        System.out.println(newLine);
        lines.add(newLine);
    }
Run Code Online (Sandbox Code Playgroud)

应改为:

 while ((newLine = br.readLine()) != null) {
        System.out.println(newLine);
        lines.add(newLine);
    }
Run Code Online (Sandbox Code Playgroud)

因此,读取一条线并处理它,而不读取另一条线然后处理.