Android应用专属文件在AS重启后消失,请求排查原因
问题分析与解决
核心结论
getFilesDir() 属于应用私有内部存储,正常重启应用不会自动删除其中的文件,你遇到的文件消失问题大概率是开发环境的配置导致的,而非代码或系统机制问题。
可能的原因及解决办法
Android Studio Run配置自动清数据
检查你的Run配置:打开Run/Debug Configurations→ 选中你的App配置 → 切换到Launch Options标签,查看是否勾选了Clear app data。如果勾选,每次点击Run运行应用时,Android Studio会自动清除应用的所有私有数据,包括getFilesDir()下的文件。取消这个勾选即可解决。模拟器配置自动重置数据
如果你使用的是Android模拟器,检查模拟器的创建/启动配置:是否勾选了Erase user data on exit选项。如果勾选,关闭模拟器后所有用户数据会被清空,下次启动模拟器相当于全新安装应用,自然找不到之前创建的文件。修改模拟器配置,取消该选项即可。代码逻辑优化建议(非文件消失原因)
你的代码每次进入onCreate都会直接创建FileWriter,默认会覆盖原文件内容(但不会删除文件)。如果需要保留原有内容,可以修改为追加模式:// 第二个参数传true表示追加写入,而非覆盖 FileWriter fw = new FileWriter(test, true);或者先判断文件是否存在,仅在不存在时创建写入:
if (!test.exists()) { try { FileWriter fw = new FileWriter(test); fw.write("hello there"); fw.close(); } catch (IOException e) { throw new RuntimeException(e); } }
内容的提问来源于stack exchange,提问作者user1012480
相关产品推荐
相关产品推荐

