删除SD卡上的文件夹

时间:2011-04-18 10:32:03

标签: android sd-card

我尝试了File.delete(),但它不起作用。 如何删除SD卡上的目录?

我正在使用Android 2.1。

5 个答案:

答案 0 :(得分:100)

在删除目录本身之前,您必须将所有目录都清空,请参阅here

在Android中,您还应该拥有适当的权限 - 清单中的WRITE_EXTERNAL_STORAGE

编辑:为方便起见,我在此处复制了代码,但仍然来自上面的链接

public static 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() );
  }

答案 1 :(得分:1)

https://stackoverflow.com/a/16411911/2397275

uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
AndroidManifest.xml文件中的

答案 2 :(得分:1)

在删除目录之前,目录必须为空。您必须以递归方式清空并删除树中的所有目录:

boolean delete(File file) {
    if (file.isDirectory()) {
        File[] files = file.listFiles();
        if (files != null)
            for (File f : files) delete(f);
    }
    return file.delete();
}

更新

似乎是file.isDirectory() == (file.listFiles() == null),但file.listFiles()记录&#34; fail readDirectory() errno=20&#34;何时file.isDirectory() == false

答案 3 :(得分:0)

它对我来说很好,我希望它对你有用。

File dir = new File(Environment.getExternalStorageDirectory()+"DirName"); 
if (dir.isDirectory()) {
        String[] children = dir.list();
        for (int i = 0; i < children.length; i++) {
            new File(dir, children[i]).delete();
        }
    }

答案 4 :(得分:0)

它对我有用:

Add in manifest-
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

private boolean deleteDirectory(File path) {
        if( path.exists() ) {
            File[] files = path.listFiles();
            if (files == null) {
                return false;
            }
            for(File file : files) {
                if(file.isDirectory()) {
                    deleteDirectory(file);
                }
                else {
                file.delete();
                }
            }
        }
        return path.exists()?path.delete():false;
    }