1
我遇到了一些試圖追加到現有文本文件的問題。關閉後,Java PrintWriter不會追加到現有的.txt文件
它似乎沒有附加行文本。到目前爲止,我已經得到了這個方法:
public static void addLine(File f, String line) {
try {
FileWriter fw = new FileWriter(f.getName(), true);
BufferedWriter buffer = new BufferedWriter(fw);
PrintWriter pw = new PrintWriter(buffer);
pw.println(line);
pw.close();
} catch (IOException e) {
System.err.println("IOException: " + e.getMessage());
}
}
,在我主我有以下幾點:
public static void main(String[] args) {
File f = new File("adresOfFile");
if (f.exists() && !f.isDirectory()) {
System.out.println("File " + f.getName() + " exists!");
System.out.println("\n" + "Path: " + f.getAbsolutePath());
System.out.println("\n" + "Parent: " + f.getParent());
System.out.println("\n" + "--------------CONTENT OF FILE-------------");
addLine(f, "");
addLine(f, "The line to append");
try {
displayContent(f);
} catch (IOException e) {
System.out.println(e.getMessage());
}
} else {
System.out.println("File not found");
}
}
當我運行它,它似乎並沒有給予任何錯誤。運行程序應該打印出現有的文本(displayContent),這是在追加(addLine)之後完成的。但是當我運行它時,它只顯示現有的文本,沒有附加的行。
它也沒有出現在文本文件中。我試圖把一個System.out.println();在方法中,它會打印,所以我知道它正確運行該方法,而不是追加。
編輯AWNSER:更換f.getName()與f和pw.close前加入pw.flush()
當我看文件沒有改變時,沒有添加行。有沒有連續的線,我只需要添加一個空行和一個測試線。 – asdfgh 2014-10-22 10:11:16
你會得到什麼輸出? 你確定你正在寫文件的名稱/路徑嗎? 該代碼適用於我。這裏是[鏈接](https://gist.github.com/vedharish/abefb0705e91e4ac28ac) 此代碼附加到與moja.java文件相同位置的文件'a'。 – 2014-10-22 10:26:34
並使用[FileWriter(File file,boolean append)](http://docs.oracle.com/javase/7/docs/api/java/io/FileWriter.html)構造函數代替FileWriter(String,boolean) 在pw.close()之前做pw.flush() – 2014-10-22 10:36:51