递归删除指定文件夹内特定名称的文件夹

今天进行项目导入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();
        }


    }
}

猜你喜欢

转载自blog.csdn.net/xuriwork/article/details/82594150