Android File.getUsableSpace仅在删除其他文件后,使用GetExternalFilesdir(N



我有一个有时需要保存文件的应用程序。在写作之前,它会检查设备上的可用空间。这是我用来检查空间的代码,并带有日志语句。

String state = Environment.getExternalStorageState();
Log.d("Classname", "external storage state is " + state);
File file = new File(getExternalFilesDir(null) + File.separator);
Log.d("Classname", "file exists " + file.exists());
long usableSpace = file.getUsableSpace();
Log.d("Classname", "Space available " + usableSpace);

我已经收到了一个错误报告,该报告在删除了约3 GB的设备上删除其他文件约为3-5 MB之后,getUsablespace在尝试保存另一个文件时将返回0。

添加第一个文件之前的日志:

11:21:46.879: external storage state is mounted
11:21:46.879: file exists true
11:21:46.880: Space available 3185496064

删除第一个文件后的日志,尝试添加第二个文件:

11:21:57.811: external storage state is mounted
11:21:57.822: file exists false
11:21:57.823: Space available 0

我的清单中具有外部存储权限,并尝试检查存储是否已安装并在创建外部存储文件时调用MKDIR(),并且该错误持续存在。我还让Tester重新启动了设备,以为它可能刚刚陷入怪异状态。

有人有任何想法为什么会发生这种情况吗?

我找到了它。解决方案是在删除的方式中发生的 - 如果最后一个文件已删除,我正在清洁目录GetExternalStoragedir正在寻找的目录,因此当我尝试在其上getusablespace时,目录不存在。

最新更新