删除SD卡上的文件夹

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

我正在使用Android 2.1。

  • 如何为Jellybean创建一个可用的AVD(API 17)?
  • java.io.FileNotFoundException(Permission denied)当试图写入Android sdcard时
  • 将图像从Android上的可绘制资源保存到SD卡
  • Android打开外部存储目录(SD卡)存储文件
  • 警告:File.mkdir()被忽略
  • 通过adb获取sdcard目录
  • 在Android sdk 2.2安装在SD卡上的应用程序
  • 在Android应用程序中解压缩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; }