我遇到一个令我讨厌的问题,似乎无法修复。我有一个名为DirFormMgmt的类,它管理两个文件; directories.txt和formats.txt。问题是,当我在程序启动时实例化该类的实例时,它会清除文件启动前的所有内容,例如,如果我打开formats.txt文件并键入“.avi”并运行程序文本文件将变为空白。这是我在班上运行的唯一代码来隔离问题,我不确定为什么会发生这种情况:
在课堂上我宣布:
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()方法,但我不确定是什么问题,非常感谢任何帮助!
答案 0 :(得分:3)
使用new FileWriter(file, true)
将内容附加到现有文件。否则,内容将被覆盖。
答案 1 :(得分:0)
您无法读取和写入此类文件。 FileWriter构造函数用于写入文件并替换其所有内容。
EIther读取内存中的所有内容,然后写入该文件,或写入另一个临时文件,并删除原始文件并在完成后重命名临时文件。