2014-04-27 116 views
-1

我無法使用OutputStreamWriter將字符串附加到現有文件。使用OutputStreamWriter將字符串附加到現有文件

它重寫文件和舊的數據不再存在:

try { 
    OutputStreamWriter outputStreamWriter = new OutputStreamWriter(openFileOutput("filename", Context.MODE_PRIVATE)); 
    outputStreamWriter.append(message); 
    outputStreamWriter.close(); 
} 

"filename"是一個已經存在的文件。 message是一個要附加的字符串。

回答

3

打開文件時使用MODE_APPEND而不是MODE_PRIVATE。 你的問題已經被回答了好幾次,喜歡這裏:Android append text file

更新

打開文件時的不同模式標誌的目的(來源:JavaDocs):

  1. MODE_PRIVATE : 文件創建模式:默認模式,創建的文件只能由調用應用程序訪問(或共享相同用戶ID的所有應用程序)。
  2. MODE_APPEND *:文件創建模式:與openFileOutput一起使用,如果文件已經存在,則將數據寫入現有文件的末尾而不是將其擦除。
  3. MODE_ENABLE_WRITE_AHEAD_LOGGING:數據庫打開標誌:設置時,數據庫打開時默認情況下啓用預寫日誌記錄。
  4. MODE_MULTIPROCESS SharedPreference加載標誌:設置時,即使共享首選項實例已在此進程中加載​​,磁盤上的文件也將被檢查修改。當應用程序有多個進程時,有時需要這種行爲,所有進程都寫入相同的SharedPreferences文件。不過,通常在流程之間有更好的交流形式。這是Gingerbread(Android 2.3)之前和之前的傳統(但沒有記錄)行爲,並且此標誌在定位此類發行版時隱含。對於目標SDK版本大於Android 2.3的應用程序,必須根據需要明確設置此標誌。
  5. MODE_WORLD_READABLE:棄用
  6. MODE_WORLD_WRITEABLE:棄用
+0

工作!請你解釋爲什麼這個MODE_PRIVATE阻止作者追加? – sourabh

+0

@sourabh根據'Context'的javadocs查看更新。 – rekaszeru