本来是打算在使用common-compress解压完压缩包后,删除源文件目录的,于是写了下面这个迭代删除文件的方法。
public static boolean deleteDir(File dir) {
if (dir.isDirectory()) {
String[] children = dir.list();
for (int i=0; i < children.length; i++) {
boolean success = deleteDir(new File(dir, children[i]));
if (!success) {
return false;
}
}
}
// 目录此时为空,可以删除
boolean b = dir.delete();
return b;
}
使用以下的测试代码是没有问题的:
File file = new File("C:/Users/liangyongxiong/Desktop/ff/f8b1420b-b94b-4ed4-9815-f4ace9aaf0621548321201218");
if(file.exists()) {
ArchiveUtil.deleteDir(file);
}
但是实际调用的时候,会用到流操作文件,如果不注意关闭文件流,在调用dir.delete()方法时,删除文件会失败,但是方法依然返回true,这可能是jdk的一个坑了。正确的做法是在删除文件前先确保所有的流都已经关闭!