Android:无法确保目录

iro*_*oys 17 storage android

我一直在使用" Environment.getExternalStorage()"来存储和管理文件.并且logcat该方法没有警告信息并且工作得非常好.

但是,我的项目需要使用方法" Context.getExternalFilesDir(String type)"并且有一条警告消息

ContextImpl:无法确保目录:/ storage/external_SD/Android/data /(包名称)/ files

幸运的是,File对象工作正常(读取或写入或使文件夹工作).

但我想知道如何解决该警告信息.我错过了什么吗?

小智 10

您应该知道警告消息是如何出现的.

getExternalFilesDir(String type)意愿调用getExternalFilesDirs(String type)(注意"s"在最终的第二方法名).

getExternalFilesDirs(String type)会发现所有类型的显示目录,并要求ensureDirsExistOrFilter()在年底前确保目录存在.

如果无法到达目录,则会打印警告!

Log.w(TAG, "Failed to ensure directory: " + dir);
dir = null;
Run Code Online (Sandbox Code Playgroud)

因此,如果您的设备有两个SD卡路径,它将产生两个目录.如果没有,则会出现警告.

结论是警告不需要修复.


Mr.*_*gle 1

如果您的代码正在迭代文件并多次调用此 API,则此警告可能会导致日志污染。为了解决这个问题(因为警告实际上是良性的),您可以创建一个包装类来存储调用 getExternalFilesDir / getExternalCacheDir 的结果,然后返回存储的值,而不是调用 API。这样,至少你只会看到这条消息一次。