[英]Line separator in Java N/IO?
使用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開始,您應該使用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")
來實現相同的目的( 請參閱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");
Formatter
( String.format
使用)將%n
解釋為系統行分隔符。
這種方法一直向下兼容Java 1.5。 但是,當然, Files
類在Java 7之前不存在。
與@Tunaki互補,如果需要兩行,則僅插入另一行:
字符串測試=“ ABC” + System.lineSeparator()+ System.lineSeparator()+“ DEF”;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.