2010-10-22 56 views
2

我正在使用Java。使用BufferedWriter将数据从不同类写入文本文件

我创建了一个文本文件。在该文本文件中,我希望将一个值存储在class1的文本文件中。然后我想要在第二行的class2中存储更多的值到文本文件中。然后,我要存储一个更大的价值在文本文件中的第3行3类等文本文件,检索时,应该是这样的:

77 
65 
34 

我遇到的问题是,文本当我转到下一个课程时,文件内容会被删除。例如,文本文件只会显示最后一个数据值。并删除以前的那些(在上面的例子中,只有34个会出现在第一行,当它应该在第三行)。

从Class1的一些代码:

BufferedWriter outputFile0=null; 
    try { 
     int x = value_MAP();   
     FileWriter fwriter0 =new FileWriter("MAP_allData.txt"); 
      outputFile0 = new BufferedWriter(fwriter0); 
       outputFile0.write(""+x); 
       outputFile0.newLine(); 
           } catch(Exception y) {y.printStackTrace();} 

相同的代码再次出现在Class2中,CLASS3等:

BufferedWriter outputFile0=null; 
     try { 
      int x = value_MAP();   
      FileWriter fwriter0 =new FileWriter("MAP_allData.txt"); 
       outputFile0 = new BufferedWriter(fwriter0); 
        outputFile0.write(""+x); 
        outputFile0.newLine(); 
            } catch(Exception y) {y.printStackTrace();} 

那么,有没有办法告诉Java中不担心擦除数据,从1级到x级时,只需一行接一行地添加数据。

回答

3

要appnend,而不是删除一个文件中现有的数据,你应该使用FileWriter的构造这样的..

FileWriter fwriter0 =new FileWriter("MAP_allData.txt", true); 

第二构造函数中的'boolean'参数'true'会告诉文件编写者追加。 javadoc

+0

谢谢。有用!但是,每次我编译/执行程序时,我都希望MAP_allData.text全新开始。 – razshan 2010-10-25 15:16:20

+0

我试着做outputFile0.flush();就在一切之前,因此它会擦除内容以获得新的值集合。但之前执行的值仍然存在。 – razshan 2010-10-25 15:18:01

+0

@Faraz Khan - 解决你的问题 - 第一次打开文件进行写入时,使用普通构造函数'FileWriter fwriter0 = new FileWriter(“MAP_allData.txt”);'后来当其他类写入同一个文件时,使用带有布尔参数'FileWriter fwriter0 = new FileWriter(“MAP_allData.txt”,true)的构造函数;' – 2010-10-25 15:30:38

3

当您创建FileWriter的第二个实例设置为开始在文件的开头写入。因此它会覆盖您刚写入的数据。您的选择是重复使用FileWriter实例,或者在第二次打开文件时查找文件末尾。

我建议第一种方法:

FileWriter sharedFileWriter = new FileWriter("myfile.txt"); 

class1 c1 = new class1(sharedFileWriter); 
class2 c2 = new class1(sharedFileWriter); 
相关问题