Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用超级csv向现有csv文件添加列_Java_Csv_Supercsv - Fatal编程技术网

Java 使用超级csv向现有csv文件添加列

Java 使用超级csv向现有csv文件添加列,java,csv,supercsv,Java,Csv,Supercsv,我承认我不是一个优秀的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 正如你所看到的,我没有(或需要)标题。 我需要在第(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
正如你所看到的,我没有(或需要)标题。 我需要在第(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可能是一个不错的选择。但是如何在现有列之间添加列呢?我应该分别阅读现有专栏的每个字段,我试图在图书馆文档中找到建议,但我不知道如何去做。

您可以使用
CsvListReader
CsvListWriter
类来完成。在下面,您可以看到如何执行此操作的简单示例:

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();
CsvListReader reader=new CsvListReader(new FileReader(inputcv),CsvPreference.STANDARD_首选项);
CsvListWriter writer=新CsvListWriter(新文件编写器(outputCsv),CsvPreference.STANDARD_首选项);
列出列;
而((columns=reader.read())!=null){
System.out.println(“输入:+列);
//添加新列
增加(1,“第2栏”);
列。添加(“最后一列”);
System.out.println(“输出:+列);
writer.write(专栏);
}
reader.close();
writer.close();

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

您好,这在。Michal的答案是类似的,尽管这一个使用了CsvMapReader/Writer,这确实需要使用头(从文件读取,或以编程方式提供)进行映射@HoundDog,我读到了,但我的文件中没有标题,也不能添加,因为我需要在另一个应用程序中使用该格式的数据。然而,经过适当调整后的Michal解决方案运行良好。