如何写入文本文件并将其保存以供多次使用

Posted

技术标签:

【中文标题】如何写入文本文件并将其保存以供多次使用【英文标题】:How to write to a text file and save it for multiple uses 【发布时间】:2012-12-19 00:21:43 【问题描述】:

到目前为止,我已经在我的资产文件夹中创建了一个文本文件,我可以很好地阅读它并执行它应该做的事情。当我使用以下内容写信时:

 FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE); 
 fos.write(("0").getBytes());
 fos.close()

它有效。但是,当我关闭我的应用并稍后重新打开它时,它不记得我将其更改为的任何内容。

有什么想法吗?

【问题讨论】:

【参考方案1】:

assets 或 raw 中的文件是只读的,因此将其复制到新位置(例如在 Environment.getDataDirectory() 中),然后您应该能够对其进行写入。


我认为这会引发某种类型的异常你有一个空的 catch 块吗?至少您应该使用e.printStackTrack() 否则您的应用程序将静默失败...

try 
    FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE); 
    fos.write(("0").getBytes());
    fos.close();
 catch (Exception e) 
    e.printStackTrace();

【讨论】:

谢谢,但我应该把它移到哪里? 您有多种选择,例如Data Storage 的“其他有用方法”小节中的getFilesDir()getDir() 再次感谢,但现在我不知道如何将它放入 Environment.getDataDirectory()...如果你能给我一个很好的例子...我只是做了一个快速谷歌搜索,找不到我要找的东西......再次感谢到目前为止你帮了我很多! 我找到了这个答案:android: How to copy files in 'assets' to sdcard?。如果有帮助,请告诉我。 非常感谢,我现在就去试试【参考方案2】:

我想你只是在写完后忘记调用flush

FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE); 
 fos.write(("0").getBytes());
 fos.flush();
 fos.close();

【讨论】:

以上是关于如何写入文本文件并将其保存以供多次使用的主要内容,如果未能解决你的问题,请参考以下文章

异或加密字符串并将其保存在文本文件中时,PC 会发出哔哔声

学习MIPS汇编:读取文本并写入文件

React Native:如何创建文本文件并将其保存到外部存储

如何在 C++ 上读取文件、反转部分文本并将反转的部分写入另一个文件?

ANDROID - 在 sdcard 中创建文件夹和文本文件并将其写入

我们如何逐行打印字符并将其保存到 PLSQL 中的 csv 或文本文件