Java N / IO中的行分隔符?

时间:2015-08-28 17:08:53

标签: java nio

使用java.nio.file写入txt文件时如何插入新行? 以下代码生成一个txt文件,其中包含一行ABCDEF,而不是两行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());
    }

3 个答案:

答案 0 :(得分:5)

从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")see Oracle docs)也可以实现相同目标。

答案 1 :(得分:1)

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

使用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类并不存在。

答案 2 :(得分:0)

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

  

字符串测试=" ABC" + System.lineSeparator()+ System.lineSeparator()+" DEF";