【问题标题】:Appending a string to an existing file using OutputStreamWriter [duplicate]使用 OutputStreamWriter 将字符串附加到现有文件 [重复]
【发布时间】:2014-06-12 18:12:45
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: android


    【解决方案1】:

    打开文件时使用 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) 中和之前的遗留(但未记录)行为,并且在针对此类版本时隐含此标志。对于面向高于 Android 2.3 的 SDK 版本的应用程序,如果需要,必须明确设置此标志。
    5. MODE_WORLD_READABLE:已弃用
    6. MODE_WORLD_WRITEABLE:已弃用

    【讨论】:

    • 成功了!你能解释一下为什么这个 MODE_PRIVATE 会阻止作者追加吗?
    • @sourabh 查看更新,基于 Context 的 javadocs。
    猜你喜欢
    • 2018-10-18
    • 2015-07-25
    • 2019-12-28
    • 2011-03-08
    • 2021-02-08
    • 2014-11-18
    • 2013-11-01
    • 2015-08-04
    • 2018-02-22
    相关资源
    最近更新 更多