2010-10-22 58 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); 
相關問題