如何在java中写入CSV文件时放置逗号?

时间:2015-04-22 10:56:23

标签: java csv

我编写了一个创建并写入CSV文件的函数。我的功能如下:

private static void writeIntoCSV(GaData results, String filename){

    try{
        File f = new File("D:\\" + filename);
        BufferedWriter output = new BufferedWriter(new FileWriter(f));

        int i = 0;
        for (ColumnHeaders header : results.getColumnHeaders()) {
            i++;
            if(i < header.size()){
                output.write(header.getName() + ",");
                i++;
            }
            else{
                output.write(header.getName());
            }
        }
        output.write("\n");
        int j = 0;
        for (List<String> row : results.getRows()) {
            j++;
            for (String column : row) {
                if(j < row.size()){
                    output.write(column + ",");
                    j++;
                }
                else{
                    output.write(column);
                }
            }
            output.write("\n");
            j = 0;
        }

        output.close();
    }
    catch(Exception e){
        System.out.println(e);
    }
}

这里当我有两个标题时,它正确地分隔它,如a,b但是当我有三个标题时它分开为:a,bc

我试图改变我喜欢的价值和地点:

int i = 1;
for (ColumnHeaders header : results.getColumnHeaders()) {
    if(i < header.size()){
        output.write(header.getName() + ",");
        i++;
    }
    else{
        output.write(header.getName());
    }
}
output.write("\n");

在这种情况下,它显示标题,如a,b,用于两个标题,a,b,c用于三个标题。如何解决此问题以正确放置逗号。

对于数据行,它的工作正常。

4 个答案:

答案 0 :(得分:1)

您可以使用番石榴Joiner加入&#39;,&#39;像这样的东西:

 Joiner joiner = Joiner.on(",").skipNulls();
 return joiner.join("Harry", null, "Ron", "Hermione");

完整文档Guava docs

答案 1 :(得分:1)

调用header.size()的返回值是什么?是标题列计数? 作为我的观点,我认为你应该与results.getColumnHeaders()的大小进行比较而不是header.size()

答案 2 :(得分:1)

删除I的第一个增量。简单的方法是看这个。有三个标题。我被设置为0.你开始循环,我变成1.我小于3,所以第一个块被执行。你再次增加,我现在是2.循环包围。我再次增加到3.但你只是第二个值。

基本上你要增加我多次!

答案 3 :(得分:0)

将第二个代码中的i设置为0而不是1,它应该可以正常工作