android file.getUsableSpace仅在删除其他文件后,使用getExternalFilesDir(null)返回零

android file.getUsableSpace仅在删除其他文件后,使用getExternalFilesDir(null)返回零,android,Android,我有一个应用程序,有时需要保存文件。在写入之前,它会检查设备上的可用空间。下面是我用来检查空间的代码,以及日志语句 String state = Environment.getExternalStorageState(); Log.d("Classname", "external storage state is " + state); File file = new File(getExternalFilesDir(null) + File.separator); Log.d("Classna

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

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(),但错误仍然存在。我还让测试人员重新启动了设备,认为它可能进入了一种奇怪的状态


有人知道为什么会发生这种情况吗?

我找到了。解决方案是删除发生的方式–如果上次删除的文件不见了,我正在清理getExternalStorageDir正在查找的目录,因此当我试图在其上获取UsableSpace时,该目录不存在