2014-05-15 33 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有一个构造函数,允许您追加而不是覆盖。