我正在使用Files.write()方法在unix openjdk版本1.8.0_151中使用Java将数据附加到文本文件中。
我阅读了此问题,建议我使用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());
}
从这个问题中,记事本使用ANSI字符集,从这个问题中,java中的字符集是一个问题,"cp1252"
但是当我添加"cp1252"
或"windows-1252"
作为字符的形式getBytes()
(或者如果我像上面的代码中那样将其保留为空)时,新行不会显示在记事本中(它们确实在所有三个方面都出现在notepad ++中)。
如果您在Unix上运行Java程序,则System.lineSeparator()\n
仍然有效。
如果您需要Windows记事本具有Windows的行分隔符,请使用\r\n
。
这是Windows记事本中的老东西-它只能识别Windows \r\n
。微软中没有人关心(从来没有):-)
您可以做的另一件事是引入自己的系统变量并将其传递给Java程序,例如
-Dtarget_system=Windows // or Unix
然后在代码中,您可以根据的值使用适当的行分隔符
System.getProperty("target_system")
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句