Android context.getFilesDir()有时会返回根文件夹

时间:2013-12-21 17:29:22

标签: android storage

在首次启动应用程序时,我使用context.getFilesDir()创建一个文件来获取存储路径。 这种方法很好,除了极少数情况下此方法返回“/”根文件夹。因此,应用程序崩溃:

  

java.io.FileNotFoundException:/ my_filename(只读文件系统)

当我在我的设备上调试时,文件路径是:

  

/data/data/my.package/files/my_filename

此代码在SherlockActivity的onCreate中调用。所以上下文是活动的上下文。奇怪的是,失败是罕见的,并且在失败的设备之间没有共性。

更新 根据目前为止的反馈,该代码应该可以工作,偶尔的故障可能是由于奇数设备造成的。试图解决这个问题对我的用例来说太过分了,因为文件存储并不是必需的。我将尝试迁移我的代码以使用SharedPreferences。

2 个答案:

答案 0 :(得分:4)

所有4.4之前的Android设备都存在确认错误,很少发生。该错误的原因是首次启动时创建应用程序私人目录的竞争条件。

建议的修补程序(由Google Android团队成员提供)是在第一个失败并返回“null”返回值后再次尝试使用Context.getFilesDir()方法。

答案 1 :(得分:0)

使用

Environment.getExternalStorageDirectory().getAbsolutePath();

获取外部存储目录。

使用

Environment.getCacheDir();

用于使用应用程序的沙盒缓存目录。