我尝试了File.delete()
,但它不起作用。 如何删除SD卡上的目录?
我正在使用Android 2.1。
答案 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;
}