public class DeleteFilesDemo {
public static void main(String[] args) throws FileNotFoundException {
// TODO Auto-generated method stub
File dir = new File("C:\\CODE\\a");
deleteDir(dir);
printTime();
}
public static void deleteDir(File dir) {
File[] files = dir.listFiles();
for (File f : files) {
if (f.isDirectory())
deleteDir(f);
else
System.out.println(f.toString() + "——" + f.delete());
}
System.out.println(dir.toString() + "................" + dir.delete());
}
public static void printTime() throws FileNotFoundException {
String time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
new PrintStream("c:/code/deleteTime.log").print(time + "\r\n所有目录与文件删除成功!");
}
}
请问,如果递归到一个空目录,再调用一次deleteDir得到的File数组不就是空的了吗?那么遍历的时候为什么不会出现异常呢?
这里假设是空目录A,判断是目录,递归调用deleteDir(File dir)
,然后到了 File[] files = dir.listFiles();
这句,由于是空目录所以files=null
;所以不进for
循环的,就直接删除了。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。