使用super-csv将列添加到现有csv文件

时间:2014-01-22 13:17:45

标签: java csv supercsv

我承认我不是一个优秀的Java程序员,可能我的问题非常愚蠢。我需要在不同的地方添加新列到现有的csv文件。我正在使用super-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

如您所见,我有(或需要)没有标题。 我需要在第(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

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

1 个答案:

答案 0 :(得分:2)

您可以使用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块中捕获所有异常并关闭流。