今天遇到一个要求,找出某目录下,后缀名是xls的文件,在网上查找学习操作,但输入相关问题,答案甚少,不太全,于是输入关键字:FilenameFilter才找到一篇很对此题的答案,建议看一下,献上网址: 遗憾的是这篇文章代码部分没有注释,可能是大神觉得比较简单就没注释了,如果是初学者看起来还是有点懵,所有我觉得还可以再详细再全一点,比如还可以用文件型数组来存放文件名等。实践后分享来给大家,这段代码主要功能就是筛选后缀名为xls的文件(你可以替换成你需要的),请看代码,例子参考的是教材《基于工作任务的Java程序设计》清华大学出版社中的(不写出来怕被打。。。),请看代码,内涵详细注释

package FilelFormSchoolBooks;
import java.io.*;
//具体实现的类
public class ListFilesDemo {
	public static void main(String[] args) {
		File file = new File("D:"+File.separator+"2015");  //“File.separator”是分隔符
		System.out.println(file.getAbsolutePath());			//输出完整路径名
		NameFilter filter = new NameFilter("xls");		// 类NameFilter是扩展于FilenameFilter接口,创建筛选条件
		// NameFilter filter = new NameFilter(".xls");  //加个点也行
		/**
		 * 下一行代码是创建了一个files的文件数组,存储文件名,
		 * (filter)就是过滤条件(在上一行代码中已经明确是筛选后缀名为xls的文件)对file目录下的所有文件进行筛选。
		 * 并存入files文件数组中
		 * 在我推荐的博文中大神用的是字符数组存储的
		 */
		File[] files = file.listFiles(filter);			
		if(files != null)  //判断文件是否存在,如果不存在而强行输出,则会报NullPointerException空指针异常的错误
			for(File afile: files) {	//for each 循环输出文件名,不了解的可以搜一下,在集合处使用很多
				if(afile != null)
					System.out.println(afile);
			}
		}
	
}
//按指定扩展名进行过滤,定义一个类实现FilenameFilter接口
class NameFilter implements FilenameFilter{
	//私有域扩展名
	private String extent;
	//接收指定的扩展名
	public NameFilter(String extent) {
		this.extent = extent;
	}
	@Override
	public boolean accept(File dir, String name) {
		return name.endsWith(extent);
		//如果文件符合指定的扩展名则返回true,否则返回false
	}
}

目录2018中的文件

java根据获取最新文件 java获取指定后缀的文件_后缀名筛选


右边是运行结果截图

java根据获取最新文件 java获取指定后缀的文件_扩展名_02

明显可以看出后缀为xls的文件被筛选出来了,进步使人快乐,好好学习,天天向上。