2011-12-30 107 views
-1

我想保留SD卡上的歷史,在edittext上鍵入。但是我的代碼每次打電話時都會生成新的File對象。 當會議代碼中的Im正在工作,但回想起「createExternalStorageFile()」,以前的歷史消失了,同樣的文件新的歷史記錄。我該如何修復?我想在SD卡上保留歷史記錄,!!只有一次創建一個文件對象,歷史故障

public void createExternalStorageFile() { 
    try { 
      File myFile = new File("/sdcard/" + tmp); 

      if (!myFile.exists() ){ 
       myFile.createNewFile(); 
      } else{ 

      FileOutputStream fOut = new FileOutputStream(myFile); 
      OutputStreamWriter myOutWriter = new OutputStreamWriter(fOut); 
      myOutWriter.append(messageHistoryText.getText()); 
      myOutWriter.close(); 
      fOut.close(); 

      } 

    } catch (IOException e) { 
    Log.e(TAG, "Could not write file " + e.getMessage()); 
    } 

}

回答

0

看看下面的代碼,它爲我工作:

public void createExternalStorageFile() { 
    if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { 
     String fileName = "out.txt"; 
     File root = Environment.getExternalStorageDirectory(); 
     File file = new File(root, fileName); 
     if (file.canWrite()) { 
      try { 
       boolean append = file.exists(); 
       FileWriter outFile = new FileWriter(file, append); 
       PrintWriter logFileWriter = new PrintWriter(outFile); 
       logFileWriter.append(messageHistoryText.getText()); 
       logFileWriter.flush(); 
       logFileWriter.close(); 
       outFile.close(); 
      } catch (IOException e) { 
       Log.e("LOGGER", "" + e.getMessage()); 
       return; 
      } 
     } else { 
      Log.e("LOGGER", "Couldn't write log file!"); 
     } 
    } else { 
     Log.e("LOGGER", "External storage is not mounted!"); 
    } 
}