Java文件不会在所有行的末尾保存新行

时间:2017-04-15 11:49:55

标签: java save

我将数据保存到csv文件时出现问题。 当我想要保存数据时,它会保存它,如下所示:

new data
2017-02-12
new

但我喜欢在文件末尾保存这样的内容:

new data,2017-02-12,new

我的代码:

public static void writeData(String filepath, List<String> lines) {

    Path file = Paths.get(filepath);
    try {
        Files.write(file, lines, StandardOpenOption.APPEND);
    } catch (IOException e) {
        System.out.println("Something went wrong with saving data to file!");
    }
}

提前致谢!

2 个答案:

答案 0 :(得分:2)

Files.write(Path, Iterable<? extends CharSequence>, OpenOption...)逐行写入文件。如果您的列表包含项目&#34;新数据&#34;,&#34; 2017-02-12&#34;,&#34; new&#34;然后每个项目将在单独的行上打印。

如果你想在一行打印它们,你必须在添加到列表之前将它们连接起来。

String[] columns = new String[] {"new data", "2017-02-12", "new"};
String row = String.join(",", columns);
List<String> rows = new LinkedList<>();
rows.add(row);

// calling your method to save lines
writeData("data.csv", rows);

答案 1 :(得分:0)

我猜您使用了错误的函数将数据写入文件。引用您正在使用的函数Files :: write的Java API:

&#34;每一行都是一个char序列,并按顺序写入文件,每行由平台的行分隔符终止,由系统属性line.separator定义。 &#34; (source

&#34;行分隔符&#34;就像&#34; \ n&#34;,&#34; \ n \ r&#34;,&#34; \ r&#34; (取决于您的文件系统)。