您的位置:首页 > 编程语言 > Java开发

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

2014-08-26 08:29 351 查看
当我们在需要在硬盘中寻找文件时市场需要深度搜索,并且要使用到过滤器,虽然在有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]);
}
}
}





                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: