JAVA——找出指定类型的所有文件

本文介绍了如何使用JAVA实现查找指定类型文件的方法,通过代码示例展示了如何过滤和筛选文件,以达到快速检索的目的。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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.结果

编译结果如下图所示:
这里写图片描述
异常情况:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值