Java N/IO 中的行分隔符?
Line separator in Java N/IO?
如何在使用 java.nio.file
写入 txt 文件时插入新行?
以下代码生成一个包含一行 ABCDEF
的 txt 文件,而不是单独的两行 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 开始,您应该使用 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) 实现相同的效果。
补充@Tunaki,如果你想要两行,只需插入另一行:
String test = "ABC" + System.lineSeparator() + System.lineSeparator() + "DEF";
使用系统行分隔符的其他选项:
使用 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。但是当然, Files
class 在 Java 7.
之前是不存在的
如何在使用 java.nio.file
写入 txt 文件时插入新行?
以下代码生成一个包含一行 ABCDEF
的 txt 文件,而不是单独的两行 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 开始,您应该使用 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) 实现相同的效果。
补充@Tunaki,如果你想要两行,只需插入另一行:
String test = "ABC" + System.lineSeparator() + System.lineSeparator() + "DEF";
使用系统行分隔符的其他选项:
使用 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。但是当然, Files
class 在 Java 7.