Android删除目录不起作用

时间:2011-12-02 21:23:29

标签: java android

我正在尝试删除整个目录。我已经搜索过,我正在使用this代码,我可以删除目录中的所有内容,但目录仍然存在。以下是我遗漏的确切代码。

public boolean DeletePoint(String JobName, String PointName){
    //Delete actual contents and file
    File folder = new File(rootSaveFolder "/" + PointName+"/");
    boolean returnBool = false; 
    try{
        returnBool = deleteDirectory(folder);
        folder.delete();
    } catch (SecurityException e){
        e.printStackTrace();
    }   
}

static public boolean deleteDirectory(File path) {
    if( path.exists() ) {
      File[] files = path.listFiles();
      if (files == null) {
          return true;
      }
      for(int i=0; i<files.length; i++) {
         if(files[i].isDirectory()) {
           deleteDirectory(files[i]);
         }
         else {
           files[i].delete();
         }
      }
    }
    return(path.delete());
  } 

我要删除的文件的字符串是:/ mnt / sdcard / test / gg /

我已经尝试了最终的'/'并且也没有用。

5 个答案:

答案 0 :(得分:1)

您确定目录是空的吗?您无法删除非空目录。

答案 1 :(得分:1)

这是你的问题;

你的递归几乎是正确的...... 这是问题所在。

如果files [i]是一个目录,(你理所当然地去清除其中的所有内容) 但是,一旦删除了文件[i]中的“所有内容”,您实际上并不删除文件[i]本身。

所以递归是不完整的; 你需要做的是删除 “其他” 在forloop内。

当文件[i]作为目录时,将在其中的所有内容被删除后进行清理。你刚离开它。

更具体一点:

public void deleteFile(String uri)
{
     File currentFile = new File(uri);
     File files[] = currentFile.listFiles();
     for (int i = 0; i < files.length; i++)
     {
          if (files[i].isDirectorty())
          {
              deleteFiles(files[i].toString());
          }
          //no else, or you'll never get rid of this folder!
          files[i].delete();
     }
}

答案 2 :(得分:0)

您是否在清单中设置了正确的权限 - WRITE_EXTERNAL_STORAGE。有时容易被忽视:/

看一下源代码主题,我认为那个人让它起作用了......

来源:Delete a folder on SD card

答案 3 :(得分:0)

您如何验证文件夹是否已遗留?有时DDMS文件资源管理器不同步,您需要在看到目录消失之前刷新它。

答案 4 :(得分:0)

try {
    File tempFolder = new File(path);

    for (File f : tempFolder.listFiles()){
        if (!f.isDirectory()) {
            f.delete();
        }
        tempFolder.delete();
    }

} catch (Exception e) {
    e.printStackTrace();
}