Android:应用程序重新启动后,保存在 getFilesDir() 中的文件消失
Posted
技术标签:
【中文标题】Android:应用程序重新启动后,保存在 getFilesDir() 中的文件消失【英文标题】:Android: files saved inside getFilesDir() disappear after application restart 【发布时间】:2020-02-13 17:36:43 【问题描述】:我想将文件保存到特定于应用的存储中,如 documentation 所示:
String filename = "myfile.txt";
String fileContents = "Hello world!";
try (FileOutputStream fos = context.openFileOutput(filename, Context.MODE_PRIVATE))
fos.write(fileContents.toByteArray());
不幸的是,每次我重新启动应用程序时,所有数据都会丢失。
如何防止数据被删除?
请注意,我对使用 SharedPreferences/External Storage/Database 不感兴趣。 android Studio 3.5.3。
【问题讨论】:
事实证明,我实际上并没有使用 try-with-resources 语句,而是使用了纯 try 语句,因此流保持打开状态。 【参考方案1】:使用完文件后,您需要关闭该文件。否则它不会存储到磁盘中,而只会存储到内存中。 这就是为什么当您“关闭”应用程序并重新开始时,它不再存在了。
FileOutputStream fos = context.openFileOutput(filename, Context.MODE_PRIVATE);
try
fos.write(fileContents.toByteArray());
catch (IOException e)
e.printStackTrace();
finally
try
if (fos!=null)
fos.flush();
fos.close();
catch( Exception e)
e.printStackTrace();
【讨论】:
以上是关于Android:应用程序重新启动后,保存在 getFilesDir() 中的文件消失的主要内容,如果未能解决你的问题,请参考以下文章
设备重新启动后,地理围栏是不是在 android 中保持活动状态