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 中重新启动时保存更改字符串

用户杀死Android应用后保存状态

设备重新启动后,地理围栏是不是在 android 中保持活动状态

相机预览没有重新启动?

Android 警报管理器在重新启动设备或从后台杀死应用程序后取消

在应用程序被杀死并重新启动后,Android 应用程序黑暗主题消失了