2014-05-15 29 views
1

我試圖存儲用戶正在輸入的數據,並將其存儲在稍後將被操作的文本文件中,我遇到了問題,繼續覆蓋第一個下面的數據行代碼:使用緩衝型打字機追加文本文件java

public void AddDataToFile(int i) 

{ 
    BufferedWriter writer = null; 
    try { 

     writer = new BufferedWriter(new FileWriter("./Cat Info.txt")); 

     Cat catCurrent; 
     catCurrent = catPenArray [i];    
     writer.append("Pen Number " + (i + 1)); 
     writer.newLine(); 
     writer.write("Cat Name " + catCurrent.CatName); 
     writer.newLine(); 
     writer.write("Cat Gender " + catCurrent.Gender); 
     writer.newLine(); 
     writer.write("Chip Number " + catCurrent.ChipNumber); 
     writer.newLine(); 
     writer.write("Arival Date " + catCurrent.ArrivalDate); 
     writer.newLine(); 
     writer.write("Departure Date " + catCurrent.DepartureDate); 
     writer.newLine(); 
     writer.write("How often fed " + catCurrent.HowOftenFed); 
     writer.newLine(); 
     writer.write("Type Of food " + catCurrent.Food); 
     writer.newLine(); 
    } catch (IOException e) { 
     System.err.println(e); 
    } finally { 
     if (writer != null) { 
      try { 
       writer.close(); 
      } catch (IOException e) { 
       System.err.println(e); 
      } 
     } 
    } 
} 

回答

2

BufferedWriter是沒有問題的 - 這就是你構建FileWriter的方式。你可以簡單地使用constructor overload which takes an append parameter

new FileWriter("./Cat Info.txt", true) 

個人而言,我會避免使用FileWriter都不過:它不允許你指定的編碼,這意味着它總是會使用平臺的默認編碼。我更喜歡使用FileOutputStream,並將其包裝在OutputStreamWriter中,明確指定編碼(通常爲UTF-8)。再次,FileOutputStream有一個構造函數,允許您追加而不是覆蓋。