2013-09-28 79 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