使用 java.nio.files 选择 EOL

Selecting EOL with java.nio.files

如何使用 java.nio.file.Files.write select Unix 行尾 \n ? 可能吗? 我没有找到要 selected 的任何选项或常量。 这是我的方法

import java.io.File;
//...
public void saveToFile(String absolutePath) {
        File file = new File(path); 
        try {
            Files.write(file.toPath(), lines/*List<String>*/, StandardCharsets.UTF_8, StandardOpenOption.CREATE, StandardOpenOption.APPEND);
        } catch (IOException e) {
            log.error(e.getMessage(), e);
        }
    }

您别无选择,只能打开 BufferedWriter 文件并手写:

try (
    final BufferedWriter writer = Files.newBufferedWriter(file.toPath(),
        StandardCharsets.UTF_8, StandardOpenOption.APPEND);
) {
    for (final String line: lines) {
        writer.write(line);
        writer.write('\n');
    }
    // Not compulsory, but...
    writer.flush();
}

(或者你按照@SubOptimal 说的做;你的选择!)

您可以覆盖 line.separator 属性

System.setProperty("line.separator", "\n");

PRO:您也可以在非 UNIX 环境中将 Files.write(... 与 UNIX lineends 一起使用
CON:更改此 属性 很可能会产生意想不到的副作用

或者你将这些行写在一个循环中。