使用BufferedWriter将来自不同类的数据写入文本文件

时间:2010-10-22 17:33:37

标签: java

我正在使用Java。

我创建了一个文本文件。在该文本文件中,我希望将一个值存储在class1的文本文件中。然后我希望在第二行的class2中将另外一个值存储在textfile中。然后我想再将一个值存储在类3等文本文件的第3行中。检索时,文本文件应如下所示:

77 
65 
34

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

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级旅行时一行接一行地添加数据。

2 个答案:

答案 0 :(得分:3)

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

我会推荐第一种方法:

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

class1 c1 = new class1(sharedFileWriter);
class2 c2 = new class1(sharedFileWriter);

答案 1 :(得分:3)

要申请而不是删除文件中的现有数据,您应该像这样使用FileWriter构造函数。

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

构造函数中的第二个'boolean'参数'true'将告诉文件writer要追加。 javadoc