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

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


    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值