在首次启动应用程序时,我使用context.getFilesDir()创建一个文件来获取存储路径。 这种方法很好,除了极少数情况下此方法返回“/”根文件夹。因此,应用程序崩溃:
java.io.FileNotFoundException:/ my_filename(只读文件系统)
当我在我的设备上调试时,文件路径是:
/data/data/my.package/files/my_filename
此代码在SherlockActivity的onCreate中调用。所以上下文是活动的上下文。奇怪的是,失败是罕见的,并且在失败的设备之间没有共性。
更新 根据目前为止的反馈,该代码应该可以工作,偶尔的故障可能是由于奇数设备造成的。试图解决这个问题对我的用例来说太过分了,因为文件存储并不是必需的。我将尝试迁移我的代码以使用SharedPreferences。
答案 0 :(得分:4)
所有4.4之前的Android设备都存在确认错误,很少发生。该错误的原因是首次启动时创建应用程序私人目录的竞争条件。
建议的修补程序(由Google Android团队成员提供)是在第一个失败并返回“null”返回值后再次尝试使用Context.getFilesDir()方法。
答案 1 :(得分:0)
使用
Environment.getExternalStorageDirectory().getAbsolutePath();
获取外部存储目录。
使用
Environment.getCacheDir();
用于使用应用程序的沙盒缓存目录。