我正在尝试从我的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();
}
我从上面的代码得到的输出是readLine()
方法读取并返回的每个替代行[第2,第4,第6行]。我不确定为什么会出现这种行为。如果我在阅读csv文件时遗漏了某些内容,请纠正我。
答案 0 :(得分:6)
你第一次在while
循环中没有处理它时读取该行,那么你再次读它,但这次你正在处理它。 readLine()
方法读取一行并将reader-pointer替换为文件中的下一行。因此,每次使用此方法时,指针都会增加1指向下一行。
此:
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 :(得分:1)
您需要删除循环体中的第一行
newLine = br.readLine();
答案 2 :(得分:0)
在Java 8中,我们可以轻松实现它
type NoHref<T> = Omit<T, 'href'>;
function test<T>(t: T): NoHref<T> {
return t;
}
export const TEST_CONST = test({} as HTMLAnchorElement);
外部列表将具有行,内部列表将具有对应的列值