如何使用 apache commons 将新列添加到 csv 文件

Posted

技术标签:

【中文标题】如何使用 apache commons 将新列添加到 csv 文件【英文标题】:how to add new column to a csv file using apache commons 【发布时间】:2018-06-10 23:11:29 【问题描述】:

我有一个如下所示的 csv 文件

name,age,total
xyz,22
abc,20

处理后的 csv 文件应如下所示

name,age,total
xyz,22,100
abc,20,102

运行此代码后

public class Converter 

    public static void main(String[] args) throws IOException 

        BufferedWriter writer = Files.newBufferedWriter(Paths.get(Constants.SAMPLE_CSV_FILE));
        CSVPrinter csvPrinter = new CSVPrinter(writer, CSVFormat.DEFAULT);

        csvPrinter.print(100);
        csvPrinter.print(102);

        csvPrinter.close();
    


输出的csv文件变成这样

100
102

我希望总数为 100 和 102。如何做到这一点

【问题讨论】:

您从未真正读取现有数据。您必须读取数据并将字段添加到每一行,然后写入更新的行. 【参考方案1】:

首先,您不应覆盖现有文件。因此,在 FileWriter 构造函数上使用附加参数:

FileWriter pw = new FileWriter("C:\\exampleFile.csv",true); 

其次,正如您在结果中看到的那样,CSVPrinter 逐行遍历您的文件。如果要添加新列,实际上需要遍历每一行并在每次迭代时插入新列的行数据,如彻底解释here

【讨论】:

以上是关于如何使用 apache commons 将新列添加到 csv 文件的主要内容,如果未能解决你的问题,请参考以下文章

Apache Spark 如何将新列从列表/数组附加到 Spark 数据帧

如何将新列添加到现有表 symfony - orocommerce

如何将新列添加到权限表

如何将新列添加到 Android SQLite 数据库?

如何使用Java UDF将新列添加到Spark数据帧

如何将新列动态添加到 bigquery 中已存在的表..?