今天进行项目导入war包,解压时项目中出现paxheader文件夹(Linux系统下打成tar.gz包发到Windows系统下然后解压出来 的,由于tar.gz的一些特性Windows下的解压软件支持的不好导致);
所以写了一个递归删除:
public class DeleteFile {
public static Integer count=0;
public static Integer filenum=0;
public static void main(String[] args) {
File file = new File("F:\\MyWorkSpace\\sinograin\\WebRoot");
String a = "asbssc";
Map<String,Integer> map=new HashMap<>();
deletefile(file,map);
System.out.println("总共删除子文件"+count+"总共删除文件夹"+filenum);
}
/**
* 递归删除指定文件夹内特定名称的文件夹
* PaxHeaders.15823 为tar.gz 解压不完全支持导致生产的文件夹
* @param allfile
* @param map
*/
private static void deletefile(File allfile,Map<String,Integer>map) {
// 获取该目录下的所有文件或文件夹的File数组
File[] arrayfile = allfile.listFiles();
// 遍历该数组,获取每一个File对象
for (File file : arrayfile) {
// 判断是否是文件夹
if (file.isDirectory()) {
deletefile(file,map);
} else {
// 不是,就判断是否为空文件
long l = file.length();
String path = file.getAbsolutePath();
if (path.indexOf("PaxHeaders") != -1) {
file.delete();
}
// 如果是空文件的话,就输出它的名称和绝对路径
else {
if (path.indexOf("PaxHeaders.15823") != -1) {
count++;
file.delete();
}
}
}
}
if (allfile.getAbsolutePath().indexOf("PaxHeaders.15823") != -1) {
filenum++;
allfile.delete();
}
}
}