Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用OutputStreamWriter将字符串追加到现有文件_Android - Fatal编程技术网

Android 使用OutputStreamWriter将字符串追加到现有文件

Android 使用OutputStreamWriter将字符串追加到现有文件,android,Android,我无法使用OutputStreamWriter将字符串附加到现有文件 它重写文件,旧数据不再存在: try { OutputStreamWriter outputStreamWriter = new OutputStreamWriter(openFileOutput("filename", Context.MODE_PRIVATE)); outputStreamWriter.append(message); outputStreamWriter.close(); } “

我无法使用
OutputStreamWriter
将字符串附加到现有文件

它重写文件,旧数据不再存在:

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

“filename”
是一个已经存在的文件<代码>消息是一个要追加的字符串。

打开文件时,使用MODE\u append而不是MODE\u PRIVATE。 您的问题已经被回答了好几次,如下所示:

更新

打开文件时使用不同模式标志的目的(源代码:
JavaDocs
):

  • 私人模式
    : 文件创建模式:默认模式,其中创建的文件只能由调用应用程序(或共享相同用户ID的所有应用程序)访问
  • 模式\u APPEND
    *
    :文件创建模式:用于openFileOutput,如果文件已存在,则将数据写入现有文件的末尾,而不是将其擦除
  • 模式\u启用\u预写\u日志记录
    :数据库打开标志:设置后,默认情况下在启用预写日志记录的情况下打开数据库
  • 模式\u多进程
    :SharedReference加载标志:设置后,即使在此进程中已加载共享首选项实例,也会检查磁盘上的文件是否有修改。当应用程序有多个进程,所有进程都写入同一个SharedReferences文件时,有时需要这种行为。不过,一般来说,流程之间有更好的沟通形式。这是Gingerbread(Android 2.3)及其之前的遗留(但未记录)行为,并且在针对此类发布时暗示了此标志。对于目标SDK版本大于Android 2.3的应用程序,如果需要,必须显式设置此标志
  • MODE\u WORLD\u可读
    :已弃用
  • MODE\u WORLD\u可写
    :已弃用

  • 工作!你能解释一下为什么这个模式会阻止writer追加吗?@sourabh根据
    上下文
    的javadocs查看更新。