我已经替换了很多字符串并输出了结果,现在我正在尝试将这些行写入文本文件。这就是我做的。我创建了一个新文件:
File newfile = new File("/Users/Bill/Desktop/newfile.txt");
if (newfile.exists()) {
System.out.println("File exists");
} else {
newfile.createNewFile();
System.out.println("New file created");
}
然后我尝试将创建的文件写入System.out.println(lines [i])的结果;
try {
WriteToFile newFile = new WriteToFile(newfile, true);
newFile.write(lines[i]);
// lines[i] is what I used to print out System.out.println(lines[i])
}
catch (IOException e) {
System.out.println("Error.");
}
但是,我没有得到我期待的东西。有什么建议吗?
WRITETOFILE:
public class WriteToFile {
private String path;
private boolean append = false;
public WriteToFile(String filename) {
path=filename;
}
public WriteToFile(String filename, boolean appendfile){
path=filename;
append=appendfile;
}
public void write(String text) throws IOException {
FileWriter filewrite = new FileWriter(path, append);
PrintWriter print = new PrintWriter(filewrite);
print.printf("%s" + "%n", text);
print.close();
}
}
答案 0 :(得分:1)
每次调用WriteToFile.write
时,它都会重新打开文件进行写入,截断文件的原始内容。您应该在构造函数中打开文件一次(并将PrintWriter
存储在字段中),然后添加close
方法,为close
调用PrintWriter
。
在主叫方面,请执行以下操作:
WriteToFile writer = new WriteToFile(filename);
try {
// writer.write(...);
} finally {
writer.close();
}
通过在close
块中调用finally
,即使异常导致函数提前退出,也可以确保文件已关闭。
答案 1 :(得分:0)
查看代码中FileWriter
构造函数的第二个参数。
FileWriter filewrite = new FileWriter(path, append);
看,它说“追加”。猜猜它做了什么。如果您不确定,请阅读the documentation。
现在,看看你如何初始化append
。
private boolean append = false;
此代码完全按预期运行。这只是开发人员的错。解决它:)
答案 2 :(得分:0)
只需使用该方法在System上设置fileName即可 的 System.setOut(文件名); 强>
然后,只要我们想使用System.out.println()进行打印,它就会直接打印到你提到的fileName。