文件在创建对象时清除自己

时间:2011-02-27 16:31:47

标签: java file object

我遇到一个令我讨厌的问题,似乎无法修复。我有一个名为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()方法,但我不确定是什么问题,非常感谢任何帮助!

2 个答案:

答案 0 :(得分:3)

使用new FileWriter(file, true)将内容附加到现有文件。否则,内容将被覆盖。

答案 1 :(得分:0)

您无法读取和写入此类文件。 FileWriter构造函数用于写入文件并替换其所有内容。

EIther读取内存中的所有内容,然后写入该文件,或写入另一个临时文件,并删除原始文件并在完成后重命名临时文件。

相关问题