2013-09-28 106 views
0

我使用下面的代碼將日誌數據保存到文件。 然而,每一個新的呼叫時,舊的內容消失時間.....爲什麼我的舊文件內容會被覆蓋?

我想不通然而是什麼問題....

public void writeToFile(String fileName, String textToWrite) { 

     FileOutputStream fOut = null; 
     try { 

      File root = new File(Environment.getExternalStorageDirectory() , fileName); 
      if (! root.exists()){ 
       root.createNewFile(); 
      } 

      fOut = new FileOutputStream(root); 
      OutputStreamWriter myOutWriter = new OutputStreamWriter(fOut); 
      myOutWriter.append(textToWrite); 
      myOutWriter.flush(); 
      myOutWriter.close(); 
     } 
     catch (Exception e) { 
      new MailService().mailMessage(e.toString()); 
     } 
     finally{ 

      if(fOut != null){ 
       try{ 
        fOut.close(); 
       } 
       catch(Exception ex){ 

       } 
      } 
     } 

    } 

回答

3

您需要通過第二個參數布爾型trueFileOutputStream構造函數指示文件將以附加模式打開而不是寫入模式。

FileOutputStream out=new FileOutputStream("myfile"); 

每次執行上述代碼時,它都會以寫入模式打開文件,以便新內容覆蓋舊內容。但是,FileOutputStream構造函數接受第二個參數,它是boolean,指示是否以附加模式打開文件。

FileOutputStream out=new FileOutputStream("myfile",true); 

上面的代碼將在附加模式打開該文件,以使新的內容將被追加到的舊的內容的結束。

要了解更多關於FileOutputStream構造函數,請參閱this

+0

Wooot!有時候你通讀了很多代碼示例,你錯過了什麼是什麼,所以謝謝你的回答,這就是訣竅! – Michel