2

我承认我不是一个伟大的 Java 程序员,可能我的问题很愚蠢。我需要在不同的地方添加新列到现有的 csv 文件中。我正在使用超级 csv 库。

我的输入文件是这样的

1,2011-5-14 16:30:0.250,A
2,2011-5-14 16:30:21.500,B
3,2011-5-14 16:30:27.000,C
4,2011-5-14 16:30:29.750,B
5,2011-5-14 16:30:34.500,F

如您所见,我没有(或不需要)标题。我需要在 column(2) 中添加一列,并在每行末尾添加一列以获得:

1,1,2011-5-14 16:30:0.250,A,1
2,1,2011-5-14 16:30:21.500,B,1
3,1,2011-5-14 16:30:27.000,C,1
4,1,2011-5-14 16:30:29.750,B,1
5,1,2011-5-14 16:30:34.500,F,1

从我得到的库文档中(我错了吗?)我不能直接修改原始文件,但最好的办法是读取它并将其写回。我想使用CsvMapReaderCsvMapwriter可能是一个不错的选择。但是如何在现有列之间添加列?我应该分别阅读现有列的每个字段,我试图在库文档中找到建议,但我不明白该怎么做。

4

1 回答 1

3

你可以使用CsvListReaderCsvListWriter类来做到这一点。下面你可以看到简单的例子如何做到这一点:

CsvListReader reader = new CsvListReader(new FileReader(inputCsv), CsvPreference.STANDARD_PREFERENCE);
CsvListWriter writer = new CsvListWriter(new FileWriter(outputCsv), CsvPreference.STANDARD_PREFERENCE);
List<String> columns;
while ((columns = reader.read()) != null) {
    System.out.println("Input: " + columns);
    // Add new columns
    columns.add(1, "Column_2");
    columns.add("Last_column");

    System.out.println("Output: " + columns);
    writer.write(columns);
}
reader.close();
writer.close();

这是一个简单的例子。您必须捕获所有异常并在finally块中关闭流。

于 2014-01-22T13:37:29.923 回答