我在以下代码中遇到问题。我要做的是删除一个文件夹及其所有内容。有时候它会起作用,有时却不起作用。
boolean success = false;
String directory = Environment.getExternalStorageDirectory().toString();
directory += "/.SID/Downloads/DC0601";
File path = new File(directory);
File[] files;
try
{
files = path.listFiles();
if (files == null)
{
success = path.delete();
}
else
{
for (int i = 0; i < files.length; i ++)
{
File currentFile = files[i];
if (currentFile != null)
currentFile.delete();
}
success = path.delete();
}
}
catch (Exception e)
{
success = false;
Log.e("deleteData Exception: ", e.toString());
}
这里发生的是,在某些情况下,目录“DC0601”确实存在并且确实包含sdcard上的文件,但是当此代码运行时,成功将返回false,因为“files”为null。为什么它是空的?!!
我根本无法理解。如果我完全关闭应用程序然后运行它,它可以检测文件和目录,并可以成功删除它们。否则,如果我已经使用该应用程序一段时间然后运行代码,它会认为该目录和那些文件不存在。
是否有人遇到与delete()
类似的问题?
答案 0 :(得分:1)
你应该使用
Environment.getExternalStorageDirectory().getPath()
我从未真正使用.toString()。
答案 1 :(得分:1)
我看到你正在抓住外部存储目录,但我没有看到你检查它的状态。
Environment.getExternalStorageState()
返回什么?