2014-04-27 115 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