java 递归查找所有目录并且删除文件夹中包含temp的文件夹

 

import java.io.*;
import java.util.regex.*;


/**
* 实现fileFilter接口
* 作用:File类的listFiles()将调用
* 为了过滤文件
* */
class filterFile implements FileFilter {
     public boolean accept(File pathname) {
         return pathname.isDirectory();
     }
}


public class DeleteTempDir {
     //fileSum用于存储处理文件夹的总数
     static int fileSum = 0;
     //fileSuccess用于存储成功删除的文件夹数
     static int fileSuccess = 0;
     //fileFaild用于存储删除失败的文件夹数
     static int fileFaild = 0;
     /**
      * 我觉的有必要提醒大家的是
      * 给main方法传参的时候,如果参数有空格的
      * 的话那么用双引引起来,如果不引那么有几个空
      * 格,参数就是空格+1的个数..............
      * */
     public static void main(String[] args) throws IOException {
         String mainDir = null;
         if (args.length == 0) {
             //这是默认要处理的路径
             mainDir = "c:/Documents and Settings";
             startProcess(mainDir);
         } else {
             for (String strParam : args) {
                 startProcess(strParam);
             }
         }
         System.out.println("处理文件夹总数: " + fileSum + " 个");
         System.out.println("成功删除文件夹: " + fileSuccess + " 个");
         System.out.println("文件夹删除失败: " + fileFaild + " 个");
     }

     private static void startProcess(String mainDir) {
         DeleteTempDir obj = new DeleteTempDir();
         //用于清除temp的目录
         File file = new File(mainDir);
         //过滤掉文件,只显示目录
         obj.iteratorDir(file.listFiles(new filterFile()));
     }

     /**
      * method:iteratorDir
      * 作用:遍历给定的目录以及所有的子目录,掉用相应的方法,把符合条件
      * 的文件夹删除
      * @param listFiles:File类型的数组
      * 作用域:private
      * return:void
      * */
     private void iteratorDir(File[] listFiles) {
         if (listFiles == null) {
             listFiles = new File[0];
         }
         for (File file : listFiles) {
             fileSum++;
             if (!deleteDir(file.getName(), file.getAbsolutePath())) {
                 //过滤掉文件,只显示目录
                 iteratorDir(file.listFiles(new filterFile()));
             }
         }
     }

     /**
      * method:deleteDir
      * 作用:把符合条件的目录删除
      * @param dirName:文件夹名
      * @param dirAbsolute
      * 作用域:private
      * return boolean:删除成功返回true,否则返回false
      * */
     private boolean deleteDir(String dirName, String dirAbsolute) {
         Pattern pattern = Pattern.compile("\\w*(temp|Temp|TEMP)\\w*");
         if (pattern.matcher(dirName).find()) {
             File deleteFile = new File(dirAbsolute);
             if (deleteFile.delete()) {
                 System.out.println(dirAbsolute + "    删除成功!!");
                 fileSuccess++;
                 return true;
             } else {
                 fileFaild++;
                 System.out.println(dirAbsolute + "   无法删除 原因可能是系统文件夹!!");
             }
         }
         return false;
     }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值