Java N/IO中的行分隔符?
使用Java N/IO中的行分隔符?,java,nio,Java,Nio,使用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.getB
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());
}
从Java 7开始,您应该使用而不是硬编码
\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”)
()。补充@Tunaki,如果您需要两行,只需插入另一行:
String test=“ABC”+System.lineSeparator()+System.lineSeparator()+“DEF”
使用系统行分隔符的其他选项: 使用另一个超负荷的
文件。写入
,它需要一个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
解释为系统行分隔符
这种方法一直向后兼容到Java1.5。但是当然,
Files
类在Java7之前并不存在。假设Java7,这仍然不能保证堆栈溢出。反正我还是投了赞成票。@Andreas我编辑了我的帖子,为Java添加了一个解决方案,OP使用了文件类,因此可以安全地假设Java 7。不,它不是。它生成一个包含ABC、换行符和DEF的文件。在某些程序中,它可能读作一行,但Java会读作两行。