我遇到了一个似乎无法解决的恼人问题。我有一个名为 DirFormMgmt 的类,它管理两个文件;目录.txt 和格式.txt。问题是,当我在程序启动时实例化此类的实例时,它会清除启动前文件中的所有内容,因此,例如,如果我打开formats.txt 文件并输入“.avi”并运行程序文本文件将变为空白。这是我在类(class)中运行的唯一代码来隔离问题,我不确定为什么会发生这种情况:
在我的类(class)顶部我声明:
File dirFile = new File("directories.txt");
File formatFile = new File("formats.txt");
private BufferedReader dirReader;
private BufferedWriter dirWriter;
private BufferedReader formatReader;
private BufferedWriter formatWriter;
构造函数:
public DirFormMgmt() throws IOException {
checkFileExistence();
initReaderWriter();
}
构造函数调用的两个方法:
public void checkFileExistence() throws IOException {
if (!dirFile.exists()) {
dirFile.createNewFile();
}
if (!formatFile.exists()) {
formatFile.createNewFile();
}
}
和:
public void initReaderWriter() throws IOException {
dirReader = new BufferedReader(new FileReader(dirFile));
dirWriter = new BufferedWriter(new FileWriter(dirFile));
formatReader = new BufferedReader(new FileReader(formatFile));
formatWriter = new BufferedWriter(new FileWriter(formatFile));
}
我检查了 createNewFile() 方法是否被调用,但它们没有被调用,所以问题一定出在我的 initReaderWriter() 方法上,但我不确定出了什么问题,非常感谢任何帮助!
最佳答案
使用new FileWriter(file, true)
将内容附加到现有文件。否则,内容将被覆盖。
关于java - 文件在对象创建时自行清除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5134361/