Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用BufferedWriter将不同类的数据写入文本文件_Java - Fatal编程技术网

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

Java 使用BufferedWriter将不同类的数据写入文本文件,java,Java,我正在使用Java 我已经创建了一个文本文件。在该文本文件中,我希望在class1的文本文件中存储一个值。然后,我想在第2行的class2文本文件中再存储一个值。然后,我希望在类3的文本文件的第3行中存储一个以上的值,等等。检索文本文件时,应该如下所示: 77 65 34 我遇到的问题是,当我转到下一个类时,文本文件内容会被删除。例如,文本文件将仅显示最后一个数据值。并删除前面的内容(在上面的示例中,只有34个也会出现在第一行,而它应该在第三行) class1中的一些代码: Buffere

我正在使用Java

我已经创建了一个文本文件。在该文本文件中,我希望在class1的文本文件中存储一个值。然后,我想在第2行的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的过程中一行接一行地添加数据就可以了

创建FileWriter的第二个实例时,会将其设置为从文件开头开始写入。所以它会覆盖您刚才写入的数据。您可以选择重用FileWriter实例,或者在第二次打开文件时查找文件末尾

我建议采取第一种办法:

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

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

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

FileWriter fwriter0 =new FileWriter("MAP_allData.txt", true);
构造函数中的第二个“boolean”参数“true”将告诉文件编写器追加。

谢谢。它起作用了!但是,每次我编译/执行程序时,我都希望MAP_allData.text以全新的方式开始;在所有内容之前,它会删除新值集的内容。但是以前执行的值仍然存在。@Faraz Khan-为了解决您的问题-在您打开文件进行写入时,第一次使用普通构造函数'FileWriter fwriter0=new FileWriter(“MAP_allData.txt”);'稍后,当您的其他类写入同一个文件时,使用带有布尔参数“FileWriter fwriter0=newfilewriter”(“MAP_allData.txt”,true);”的构造函数@法拉兹·汗-不客气。如果我的解决方案对你有帮助,请接受我的回答。