使用java.nio.file
写入txt文件时如何插入新行?
以下代码生成一个txt文件,其中包含一行ABCDEF
,而不是两行ABC
和DEF
:
public static void main(String args[]) throws IOException {
final Path PATH = Paths.get("test.txt");
String test = "ABC\nDEF";
Files.write(PATH, test.getBytes());
}
答案 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");
Formatter
(String.format
使用)将%n
解释为系统行分隔符。
这种方法可以向后兼容,直到Java 1.5。但是,当然,在Java 7之前,Files
类并不存在。
答案 2 :(得分:0)
补充@Tunaki,如果你想要两行,只需插入另一行:
字符串测试=" ABC" + System.lineSeparator()+ System.lineSeparator()+" DEF";