删除SD卡上的文件夹

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

我正在使用Android 2.1。

Solutions Collecting From Web of "删除SD卡上的文件夹"

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

在Android中,您应该拥有适当的权限 – WRITE_EXTERNAL_STORAGE中的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() ); } 

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

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

在AndroidManifest.xml文件中

它对我来说工作得很好,我希望它能为你工作。

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

目录必须是空的,才能被删除。 您必须recursion清空并删除树中的所有目录:

 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.isDirectory() == false时, file.listFiles()logging“ fail readDirectory() errno=20 ”。

它为我工作:

 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; }