簡體   English   中英

Java N / IO中的行分隔符?

[英]Line separator in Java N/IO?

使用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());
    }

從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");

FormatterString.format使用)將%n解釋為系統行分隔符。

這種方法一直向下兼容Java 1.5。 但是,當然, Files類在Java 7之前不存在。

與@Tunaki互補,如果需要兩行,則僅插入另一行:

字符串測試=“ ABC” + System.lineSeparator()+ System.lineSeparator()+“ DEF”;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM