删除SDCard上的文件;设备认为文件即使存在也不存在

时间:2011-06-01 17:36:21

标签: android sd-card delete-file

我在以下代码中遇到问题。我要做的是删除一个文件夹及其所有内容。有时候它会起作用,有时却不起作用。

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()类似的问题?

2 个答案:

答案 0 :(得分:1)

你应该使用

Environment.getExternalStorageDirectory().getPath()

我从未真正使用.toString()。

答案 1 :(得分:1)

我看到你正在抓住外部存储目录,但我没有看到你检查它的状态。

Environment.getExternalStorageState()返回什么?