Java N / IO中的行分隔符?

使用java.nio.file写入txt文件时如何插入新行? 下面的代码生成一个带有一行ABCDEF的txt文件,而不是两行单独的ABCDEF

 public static void main(String args[]) throws IOException { final Path PATH = Paths.get("test.txt"); String test = "ABC\nDEF"; Files.write(PATH, test.getBytes()); } 

从Java 7开始,您应该使用System.lineSeparator()而不是硬编码\n ,因为行分隔符实际上取决于代码将运行的机器。

 public static void main(String args[]) throws IOException { final Path PATH = Paths.get("test.txt"); String test = "ABC" + System.lineSeparator() + "DEF"; Files.write(PATH, test.getBytes()); } 

如果您仍在使用Java 6或更早版本,则可以使用System.getProperty("line.separator")实现相同的function( 请参阅Oracle文档 )。

使用系统行分隔符的其他选项:

使用另一个Files.write重载,它需要一个Iterable字符串(准确地说是CharSequence ),并使用系统行分隔符将它们各自写入自己的行。 如果您已将行存储在集合中,这将非常有用。

 Files.write(PATH, Arrays.asList("ABC","DEF"),StandardCharsets.UTF_8); 

(最好指定字符集而不是依赖于默认值,这是在使用没有字符集的String.getBytes()时发生的情况)。

或者使用String.format

 String test = String.format("ABC%nDEF"); 

FormatterString.format使用)将%n解释为系统行分隔符。

这种方法可以向后兼容,直到Java 1.5。 但是,当然,在Java 7之前, Files类并不存在。

补充@Tunaki,如果你想要两行,只需插入另一行:

String test =“ABC”+ System.lineSeparator()+ System.lineSeparator()+“DEF”;