我有一个有时需要保存文件的应用。在写入之前,它会检查设备上的可用空间。这是我用来检查空间的代码,带有日志语句。
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-5 MB,在大约3 GB免费的设备上,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(),并且该错误仍然存在。我也让测试人员重新启动设备,认为它可能刚刚进入一个奇怪的状态。
有没有人有任何想法可能会发生这种情况?
答案 0 :(得分:1)
我找到了。解决方案是删除发生的方式 - 如果删除的最后一个文件消失了,我正在清理getExternalStorageDir正在查找的目录,所以当我试图获取它的UsableSpace时,该目录不存在。