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