Delete a folder on SD card

后端 未结 5 648
感动是毒
感动是毒 2020-11-29 04:24

I tried File.delete() but it doesn\'t work. How to delete a directory on SD card?

I\'m working on Android 2.1.

相关标签:
5条回答
  • 2020-11-29 04:59

    it's worked fine for me, i hope it will work for you.

    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();
            }
        }
    
    0 讨论(0)
  • 2020-11-29 05:04

    It worked for me:

    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;
        }
    
    0 讨论(0)
  • 2020-11-29 05:06

    Directories must be empty before they will be deleted. You have to recursively empty and delete all directories in the tree:

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

    Update:

    It seems like file.isDirectory() == (file.listFiles() == null), but file.listFiles() logs "fail readDirectory() errno=20" when file.isDirectory() == false.

    0 讨论(0)
  • 2020-11-29 05:19

    You have to have all the directory empty before deleting the directory itself, see here

    In Android, you should have the proper permissions as well - WRITE_EXTERNAL_STORAGE in your manifest.

    EDIT: for convenience I copied the code here, but it is still from the link above

    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() );
      }
    
    0 讨论(0)
  • 2020-11-29 05:23

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

    uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
    

    in AndroidManifest.xml file

    0 讨论(0)
提交回复
热议问题