JAVA——找出指定类型的所有文件
1.目的及方法
为了快速地从一个文件结构中找出指定类型的所有文件,应使用文件类型的过滤器,方便对文件夹或文件进行过滤和筛选。
2.代码
import java.io.File; //引入类
import java.io.FileFilter;
import java.util.ArrayList;
import java.util.List;
public class rw10 { //操作查找文件的类
static int countFiles=0; //声明统计文件个数的变量
static int countFolders=0; //声明统计文件夹的变量
public static File[] searchFile(File folder,final String keyWord) {
//递归查找包含关键字的文件
File[] subFolders=folder.listFiles(new FileFilter() {
//运用内部匿名类获得文件
public boolean accept(File pathname) {
//实现FileFilter类accept方法
if(pathname.isFile()) //如果是文件
countFiles++;
else //如果是目录
countFolders++;
if(pathname.isDirectory()
||(pathname.isFile()&&pathname.getName().contains(keyWord)))//目录或文件包含关键字
return true;
return false;
}
});
List result =new ArrayList(); //声明 一个集合
for (int i=0;i<subFolders.length;i++) {//循环显示文件夹或文件
//如果是文件则将文件添加到结果列表中
if(subFolders[i].isFile()) {
result.add(subFolders[i]);
}else {
//如果是文件夹,则递归调用本方法,然后把所有的文件加到结果列表中
File[] foldResult = searchFile(subFolders[i],keyWord);
for(int j=0;j<foldResult.length;j++) {//循环显示文件
result.add(foldResult[j]); //文件保存到集合中
}
}
}
File files[]=new File[result.size()];
result.toArray(files); //集合数组化
return files;
}
public static void main(String[] args) { //Java程序的主入口处
// TODO Auto-generated method stub
File folder=new File("D:\\office\\学前任务");//默认目录
String keyword ="rw"; //关键字的设定
if(!folder.exists()) {
//如果文件夹不存在
System.out.println("目录不存在:"+folder.getAbsolutePath());
return;
}
File[]result =searchFile(folder,keyword); //调用方法获得文件数组
System.out.println("在"+countFiles+"以及所有子文件中查找对象"+keyword);
System.out.println("查找了"+countFiles+"个文件,"+countFolders+"个文件夹,共找到"+result.length+"个符合条件的文件:");
for (int i=0;i<result.length;i++){//循环显示文件
File file=result[i];
System.out.println(file.getAbsolutePath()+" ");//显示文件绝对路径
}
}
}
3.结果
编译结果如下图所示:
异常情况: