如何使用 java 将字符串中的逗号分隔值存储为 CSV

how to store comma separated values in a String to CSV using java

我想使用以下代码将字符串存储到 CSV 文件中,但生成的是空 CSV。

代码

 try {
            PrintWriter writer = new PrintWriter(new File("test.csv"));
            StringBuilder sb = new StringBuilder();
            String str ="1 cup, honey, 2 tablespoons ,canola" ;
            sb.append(str);
            writer.write(String.valueOf(sb));

        } catch (FileNotFoundException e) {
            System.out.println(e.getMessage());
        }

Expected Output :

The data should show like this in CSV file.

1 cup

honey

2 tablespoons

canola

我怎样才能得到预期的结果?

        String str ="1 cup, honey, 2 tablespoons ,canola" ;

这会将数据保留在一行中,并且每个逗号都会根据 CSV 文件的规则将数据带到新列中。您需要在数据中附加一个新行,以便在每个逗号之后将数据保存到新行。可以通过这个来完成。

 try (PrintWriter writer = new PrintWriter(new File("test.csv"))) {

        StringBuilder sb = new StringBuilder();
        String str = "1 cup, honey, 2 tablespoons ,canola";
        String []splitted_str=str.split(",");
        for (String string : splitted_str) {
            sb.append(string).append("\n"); //this will add a new line after every value separated by comma.
        }
        writer.write(sb.toString());

        System.out.println("done!");

    } catch (FileNotFoundException e) {
        System.out.println(e.getMessage());
    }

您需要刷新作者内容 . 添加 writer.flush()writer.write()

之后

可以参考this answer

并且还记得关闭编写器流以优化资源。

因为我喜欢短码:

String str = "1 cup, honey, 2 tablespoons ,canola";
try (PrintWriter writer = new PrintWriter(new File("test.csv"))) {
    Arrays.stream(str.split(",")).map(String::trim).forEach(writer::println);
} catch (FileNotFoundException e) {
    System.out.println(e.getMessage());
}