自定义java文件过滤器与文件的深度搜索

当我们在需要在硬盘中寻找文件时市场需要深度搜索,并且要使用到过滤器,虽然在有FilenameFilter接口,里面有accept(),只要实现根据实际要求实现相应的代码,
即可完成完成文件的过滤,今天我们自定义一个过滤器:


 
<pre name="code" class="java">		package com.ye;
		import java.io.File;
		import java.util.ArrayList;

		
		public class MyFileFilter{
			/**
			 * 文件过滤器
			 * @author kry
			 * @param s
			 * @param fatherPath
			 * @return String[]
			 */

			
			//传入两个参数,运用list()的到的集合S 和传入的路径fatherPath
			public String[] fileFilter(String[] s,String fatherPath){
				File file = null;
				//定义一个list,用于存储符合要求的文件名(s中的元素)
			    ArrayList<String> list =  new ArrayList<String>();
				for(int i=0;i<s.length;i++){
					file = new File(fatherPath+"\\"+s[i]);
					if(file.isDirectory()) {//如果是文件夹则执行如下操作
						//运用递归的思想调用本方法
						String[] min = fileFilter(file.list(),fatherPath+"\\"+s[i]);
						for(int j =0;j<min.length;j++) {
							System.out.println(min[j]);
						}
					}else {
						if(s[i].endsWith(".java")){
							list.add(s[i]);
						}
					}
				}
				//将list的元素复制到字符串数组str中
				String[] str = new String[list.size()];
				for(int i =0;i<list.size();i++) {
					str[i] = list.get(i);
				}
				//返回符合要求的数组
				return str;
			}
		}

在定义一个JavaFinds类:

<pre name="code" class="java">		package com.ye;
		
		import java.io.File;
		import java.io.FilenameFilter;
		
		public class JavaFinds {
		    public static void main(String[] args) {
				if(args.length!=1) {
					System.out.println("请输入正确的路径:");
					System.exit(0);
				}
				String dir = args[0];
				File file = new File(dir);
				String[] str = file.list();
				String[] newStr = new MyFileFilter().fileFilter(str,dir);
				for(int i = 0;i<newStr.length;i++) {
					System.out.println(newStr[i]);
				}
			}
		}



 
 


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值