我一直在遇到一個問題,現在已經測試了我能想到的所有可能性。不幸的是,這些可能性不起作用。Java BufferedWriter - newLine()方法
基本上,我試圖用Java中的BufferedWriter寫入一個.txt文件。我需要這種設置,以便在每條數據之間可以有一條線。想象一下,這是從Java生成的文本文件,它應該是這樣的:
line1
line2
這裏是我的代碼:
public static void main(String[] args) {
Path path = Paths.get("test.txt");
if (!Files.exists(path)) {
try {
Files.createFile(path);
} catch (IOException e) {
System.out.println("Error in creating test.txt! Read the stacktrace
below.");
e.printStackTrace();
}
}
Charset charset = Charset.forName("UTF-8");
try (BufferedWriter writer = Files.newBufferedWriter(path, charset)) {
String string = "line1";
writer.write(string, 0, string.length());
writer.newLine();
writer.newLine();
writer.flush();
} catch (IOException e) {
System.out.println("Unable to write to file! Read the StackTrace below.");
e.printStackTrace();
}
try (BufferedWriter writer = Files.newBufferedWriter(path, charset)) {
String string = "line2";
writer.write(string, 0, string.length());
writer.flush();
} catch (IOException e) {
System.out.println("Unable to write to file! Read the StackTrace below.");
e.printStackTrace();
}
}
這樣做的輸出產生一個文本文件,像這樣:
line2
現在,我知道我可以結合我的兩個嘗試/捕獲,它會工作。但這只是一個測試表示;在我的真實代碼中,我需要單獨執行此操作,以便每次觸發特定事件時都可以寫入.txt文件。
基本上,newLine()方法不是保存除非我在它們後面直接寫文本。
任何幫助一如既往的讚賞!
你確定這個問題不是當你重新打開你的文件時,你覆蓋了已經存在的文件嗎? – awksp
您可以使用Charset charset = StandardCharsets.UTF_8;作爲StandardCharsets列表常量,所有的字符集都可以在任何JRE中使用(與ISO-8859-3不同)。沒有UnsupportedEncodingException! –