Java8:无法追加记事本中显示的新行

Java 8: Unable to append new lines that show up in notepad

我在 unix openjdk 版本 1.8 中使用 java 将数据附加到文本文件。0_151 使用 Files.write() 方法。

我读了 ,它建议我使用 System.lineSeparator() 而不是 "\n"

我的代码如下所示:

try {
    Files.write(Paths.get("spillInfo.txt"), 
    (infoString + System.lineSeparator()).getBytes(), 
     StandardOpenOption.APPEND);

} catch (IOException e) {
     System.err.println("Caught IOException: " +  e.getMessage());
}

this question Notepad uses the ANSI charset and from this question 开始,java 中的字符集是 "cp1252" 但是当我添加 "cp1252""windows-1252" 作为 getBytes() 的参数时(或者如果我像上面的代码一样将它留空)新行不会出现在记事本中(它们确实在所有三个方面都出现在记事本++中)。

如果你 运行 你的 Java Unix 程序,System.lineSeparator() 无论如何都是 \n

如果你需要Windows记事本有windows行分隔符,那么使用\r\n

它是 Windows 记事本中的旧东西 - 它只能识别 Windows \r\n。 Microsoft 中没有人关心它(而且从来没有关心过):-)

您还可以做的是引入您自己的系统变量并将其传递给您的 Java 程序,例如

-Dtarget_system=Windows     // or Unix

然后在代码中,您可以根据

的值使用适当的行分隔符
System.getProperty("target_system")