一次读取两行CSV(Java)

时间:2010-02-17 01:11:30

标签: java csv

有没有办法在Java中一次读取两行csv文件?

我可以使用Scanner一次读取一个(必须这样做):

String line = input.nextLine();
String[] nline = line.split ("[,]");
......

以下是一些示例数据和简短说明。我需要一次读取这两个,所以我可以进行其他处理。

以“创建”开头的第一行创建一个人 第二行“行动”是被创造者的行为

create,Mr. Jones,blah,blah 
action,1,3
create,Mrs.Smith,blah,blah
action,4,10
....

提前致谢。

3 个答案:

答案 0 :(得分:6)

如果你想用Java解析CSV文件我会避免通过string.split()方法进行行拆分。如果您的字段包含逗号,则可能会遇到问题。对于Java,我建议opencsv来解析数据。与使用扫描仪类似,您可以逐行读取,或者如果文件不是太大则覆盖整个文件,并且只是一次遍历列表到项目。

CSVReader reader = ...
String[] firstLine; // fields from first line
String[] secondLine; // fields from second line

while ((firstLine = reader.next()) != null && (secondLine = reader.next()) != null) {
   // do something with two lines        
}     

或者

CSVReader reader = ...
List<String[]> allLines = reader.readAll();
// TODO: validate we have an even number of lines

for (int i = 0; i < allLines.size(); i += 2) {
   String[] firstLine = allLines.get(i);
   String[] secondLine = allLines.get(i+1);

   // do something with two lines
}

答案 1 :(得分:4)

String line = input.nextLine() + input.nextLine();

答案 2 :(得分:3)

Cory的答案很好但是你的下一部分工作

String[] nline = line.split ("[,]");
......

你需要在那里添加逗号

String line = input.nextLine() + "," + input.nextLine();