【问题标题】:how to store comma separated values in a String to CSV using java [duplicate]如何使用java将字符串中的逗号分隔值存储到CSV [重复]
【发布时间】:2020-05-13 20:33:23
【问题描述】:

我想使用以下代码将字符串存储到 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());
        }

预期输出:

CSV 文件中的数据应如下所示。

1 杯

亲爱的

2 汤匙

油菜

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

【问题讨论】:

    标签: java arrays file export-to-csv


    【解决方案1】:
            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());
        }
    

    【讨论】:

    • 实际上,使用此代码,您不需要close() 作者(或者甚至flush() 它,就此而言)。 - 您使用的 try-with-resources 会为您做到这一点。
    • @daniu 感谢分享。我会更新我的答案
    【解决方案2】:

    您需要刷新编写器内容 . 添加 writer.flush()writer.write() 之后

    可以参考this answer

    还记得关闭 writer 流以进行资源优化。

    【讨论】:

      【解决方案3】:

      因为我喜欢短代码:

      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());
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-01-16
        • 2014-01-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-18
        • 1970-01-01
        • 2016-02-05
        相关资源
        最近更新 更多