【Android】删除某目录\整个文件夹的文件

删除某目录下文件:

%title插图%num
private void deleteAllFiles(File root) {
File files[] = root.listFiles();
if (files != null)
for (File f : files) {
if (f.isDirectory()) { // 判断是否为文件夹
deleteAllFiles(f);
try {
f.delete();
} catch (Exception e) {
}
} else {
if (f.exists()) { // 判断是否存在
deleteAllFiles(f);
try {
f.delete();
} catch (Exception e) {
}
}
}
}
}
只要把传入参数设置成要删除的目录即可。

删除整个文件夹里面的文件:

 

%title插图%num
使用时记得添加操作文件的权限!

<uses-permission android:name=”android.permission.WRITE_EXTERNAL_STORAGE” />

<uses-permission android:name=”android.permission.MOUNT_UNMOUNT_FILESYSTEMS” />

<uses-permission android:name=”android.permission.WRITE_MEDIA_STORAGE” />
//flie:要删除的文件夹的所在位置
private void deleteFile(File file) {
if (file.isDirectory()) {
File[] files = file.listFiles();
for (int i = 0; i < files.length; i++) {
File f = files[i];
deleteFile(f);
}
file.delete();//如要保留文件夹,只删除文件,请注释这行
} else if (file.exists()) {
file.delete();
}
}

评论:
suquan629
岭南散人:代码有 bug,如果传入的是一个文件的话,那个文件不会被删除。因为没有处理单个文件的逻辑。 new File(“e:/IDA/1.txt”) 你可以传这个参数试试,当然之前你先构造好这个文件。
zhuang_1008
zhuang_1008:if (f.isDirectory()) { // 判断是否为文件夹 deleteAllFiles(f); try { f.delete(); } catch (Exception e) { } } else { if (f.exists()) { // 判断是否退出(未被使用) deleteAllFiles(f); try { f.delete(); } catch (Exception e) { } } } 如果不是目录 都可以直接删除文件了 为什么还要迭代?死循环?
Etzmico
伊茨米可回复:没错呀。 if文件夹,else文件。要不哪来的被使用…… 亲,自己试试就知道啦,要实践,不能光靠看和想~
zhuang_1008
zhuang_1008回复伊茨米可:*对死循环
zhuang_1008
zhuang_1008回复伊茨米可:哪来的文件夹,if里是文件夹,else里面就是文件了
Etzmico
伊茨米可回复:文件夹中文件夹
zhuang_1008
zhuang_1008:if (f.exists()) { // 判断是否退出(未被使用) 注释亮了
Etzmico
伊茨米可回复:算了,自己去试试吧,理论家伤不起……实践出真知。
Etzmico
伊茨米可回复:只知其一不知其二……莫非你在windows系统中删文件时没遇到“该文件正在被使用”的提示么……汗。。
zhuang_1008
zhuang_1008回复伊茨米可:你知道exists这个方法的意思是什么吗?是占用吗?这个方法是判断文件或者文件夹是否存在的.
Etzmico
伊茨米可回复:你不会以为我当成exit了吧?退出是针对文件,括号里解释了。
mingmingsuper
皓月明:很好用已经测试了,不过这种在Android 10上只适合删除private的文件
qq_44060543
LccccccI:好使,记得添加权限
qq_33346542
qq_33346542:不好使,删不掉
ZhangXuxiaoqingnian
勤奋的小狼回复:只要权限全,就没问题的