Java File中的过滤器

Java File中的过滤器

File[] listFiles(FileFilter filter)

File[] listFiles(FilenameFilter filter)

FileFilter和FilenameFilter 都是接口,内部都有一个需要实现的方法。它俩的作用就是在构造File[]是进行筛选,按条件将符合条件的file放进File[]中
下面分开讲

FileFilter
package java.io;
//这是FileFilter的源码(删除了注释)
@FunctionalInterface
public interface FileFilter {
    boolean accept(File pathname);
}

实际应用

private static void getAllFiles1(File file) {
	if(file.isDirectory()){
		File[] files = file.listFiles(new FileFilter() {//匿名内部类写法,直接重写方法
			@Override
			public boolean accept(File pathname) {//将.jar结尾的文件存储到files中
			//这里写过滤的条件
				return pathname.isDirectory() || pathname.getName().endsWith(".jar");
			}
		});
		for (File file1 : files) {
			System.out.println(file1);
		}
	}
}

FilenameFilter

package java.io;
//这是FilenameFilter的源码(删除了注释)
@FunctionalInterface
public interface FilenameFilter {
    boolean accept(File dir, String name);
}

实际应用

private static void getAllFiles2(File file) {
	if (file.isDirectory()) {
		File[] files = file.listFiles(new FilenameFilter() {
			@Override
			public boolean accept(File dir, String name) {
			//new File(dir, name)  File的构造方法
				return new File(dir, name).isDirectory() || name.endsWith(".java");
			}
		});
		for (File file1 : files) {
			System.out.println(file1);
		}
	}
}

值得注意的是:

File[] listFiles()
File[] listFiles(FileFilter filter)
File[] listFiles(FilenameFilter filter)

都只能得到下一层的文件,如果想要得到更深层的文件,需要嵌套或者递归

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值