java 过滤器 过滤文件中的文件_Java 使用FileFilter过滤器对文件进行搜索
FileFilter概述
java.io.FileFilter是一个接口,是File的过滤器。
该接口的对象可以传递给File类的listFiles(FileFilter filter)作为参数,FileFilter接口中只有一个方法。
boolean accept(File pathname):测试pathname是否应该包含在当前File目录中,符合则返回true。
FileFilter接口
public interfaceFileFilter {/*** 测试指定的抽象路径名是否应包含在路径名列表中。
*
*@parampathname 要测试的抽象路径名
*@returntrue
if and only if pathname
* should be included*/
booleanaccept(File pathname);
}
举例
递归查看某文件夹中以.java为后缀的文件
定义FileFilter接口的实现类,规定筛选规则
importjava.io.File;importjava.io.FileFilter;public class FileFilterImp implementsFileFilter {/*** 过滤规则:
* accept方法中,判断file对象是否是以.java结尾,
* 如果是,返回true,否则返回false
*@parampathname file传递过来的路径名称
*@returntrue or false*/@Overridepublic booleanaccept(File pathname) {if(pathname.isDirectory()) {return true;
}return pathname.getName().endsWith(".java");
}
}
定义筛选方法并测试
importjava.io.File;importjava.io.FileFilter;public classDemo01FileFilter {public static voidmain(String[] args) {
File file= new File("/Users/liyihua/IdeaProjects/Study/src/view/study/demo29");
ergodic1(file);
System.out.println("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
FileFilterImp filter= newFileFilterImp();
ergodic2(file, filter);
}/*** 过滤掉不是.java为后缀的文件名
*@paramfile 文件或目录*/
public static voidergodic1(File file) {//是否存在该目录或文件
if(file.exists()) {//存在该目录或文件,获取该目录下的所有目录和文件
File[] files =file.listFiles();//遍历该目录下的文件或目录
assert files != null;for(File f : files) {//该目录下,如果是目录,使用递归。如果是文件,直接输出。
if(f.isDirectory()) {
ergodic1(f);
}else if (f.getName().endsWith(".java")) {
System.out.println(f.getName());
}
}
}else{if(file.isFile()) {
System.out.println("不存在该文件");
}else{
System.out.println("不存在该目录");
}
}
}public static voidergodic2(File file, FileFilter filter) {if(file.exists()) {
File[] files=file.listFiles(filter);for(File f : files) {if(f.isDirectory()) {
ergodic2(f, filter);
}else{
System.out.println(f.getName());
}
}
}else{if(file.isFile()) {
System.out.println("不存在该文件");
}else{
System.out.println("不存在该目录");
}
}
}
}
控制台输出
FileFilterImp.java
Demo01FileFilter.java+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++FileFilterImp.java
Demo01FileFilter.java
例子优化1:
//使用匿名内部类
public classDemo01FileFilter {public static voidmain(String[] args) {
File file= new File("/Users/liyihua/IdeaProjects/Study/src/view/study/demo29");
ergodic2(
file,newFileFilter() {
@Overridepublic booleanaccept(File pathname) {if(pathname.isDirectory()) {return true;
}return pathname.getName().endsWith(".java");
}
}
);
}
}
控制台输出
FileFilterImp.java
Demo01FileFilter.java
例子优化2:
importjava.io.File;//由于FileFilter接口中只有一个抽象方法,所以可以使用Lambda表达式简化//接口实现类,这样也可以不用定义接口实现类,而且比匿名内部类更简洁
public classDemo02FileFilter {public static voidmain(String[] args) {
File file= new File("/Users/liyihua/IdeaProjects/Study/src/view/study/demo29");
ergodic(file);
}public static voidergodic(File file) {if(file.exists()) {
File[] files=file.listFiles(
(File pathname)-> {return pathname.getName().endsWith(".java") || newFile(String.valueOf(pathname)).isDirectory();}
);assert files != null;for(File f : files) {if(f.isDirectory()) {
ergodic(f);
}else{
System.out.println(f.getName());
}
}
}else{if(file.isFile()) {
System.out.println("不存在该文件");
}else{
System.out.println("不存在该目录");
}
}
}
}
控制台输出
FileFilterImp.java
Demo02FileFilter.java
Demo01FileFilter.java
其中优化2中还可以进一步优化(对lambda表达式进行优化)
importjava.io.File;public classDemo03FileFilter {public static voidmain(String[] args) {
File file= new File("/Users/liyihua/IdeaProjects/Study/src/view/study/demo29");
ergodic(file);
}public static voidergodic(File file) {if(file.exists()) {
File[] files=file.listFiles(
pathname-> pathname.getName().endsWith(".java") || newFile(String.valueOf(pathname)).isDirectory()
);assert files != null;for(File f : files) {if(f.isDirectory()) {
ergodic(f);
}else{
System.out.println(f.getName());
}
}
}else{if(file.isFile()) {
System.out.println("不存在该文件");
}else{
System.out.println("不存在该目录");
}
}
}
}
控制台输出
FileFilterImp.java
Demo02FileFilter.java
Demo03FileFilter.java
Demo01FileFilter.java
java 过滤器 过滤文件中的文件_Java 使用FileFilter过滤器对文件进行搜索相关推荐
- linux java excel文件_使用Java语言将excel中读取到的内容导入Linux的文件中
一.maven配置 导入excel表格需要使用的依赖: org.apache.poi poi 4.0.0 org.apache.poi poi-ooxml 4.0.0 二.测试程序 package u ...
- 将 a.txt 文件中的单词与 b.txt 文件中的单词交替合并到 c.txt 文件 中
package again;import java.io.*;/* 1.编写一个程序,将 a.txt 文件中的单词与 b.txt 文件中的单词交替合并到 c.txt 文件 中,a.txt 文件中的单词 ...
- 使用Python批量实现某一Excel文件中每3行数据存一个Excel文件
点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 远芳侵古道,晴翠接荒城. 大家好, ...
- python从文件中删除某个字符,后保存该文件
从文件中删除某个字符,后保存该文件 原本是用vs全部替换,结果发现文件太多了,将近12000个文件,非常费时间,然后就给他写了个脚本哈哈,比较快4秒就搞定了.代码拿走直接就可以用途. #!/usr/b ...
- python文件中单词的删除_使用python删除文件中的多余单词
嗨,我正在学习Python,出于好奇,我编写了一个程序来删除文件中多余的单词. 我正在比较文件text1.txt中的测试.和'text2.txt',基于text1中的测试,我删除了test2中多余的单 ...
- 把一个文件中的内容,复制到另外一个文件中
# 把一个文件中的内容,复制到另外一个文件中.# 基础目录 BASE_DIR = "E:/python重新学习/python核心编程/文件读写/" # 读取的文件名 READ_FI ...
- 根据条件从txt文件中挑出一些文字并据此修改文件名字
根据条件从txt文件中挑出一些文字并据此修改文件名字 /* ****************************************************** *学习Windows API编 ...
- 【正则表达式高级day01】正则表达式概述+在一个文件中,查找出itcast开头的语句+在一个文件中,找到含有itcast的语句+在一个文件中,找到邮箱为163或者126的所有邮件地址
文章目录 正则表达式概述 思考 场景1:在一个文件中,查找出itcast开头的语句 场景:在一个文件中,找到含有itcast的语句 场景:在一个文件中,找到邮箱为163或者126的所有邮件地址 正则表 ...
- java文件中查找字符串_Java 在本地文件中查找固定字符串
适用范围:只适用于在文本文档中查找(如,txt.java.c等等,并不适用与doc.xls等等这些文件),可嵌套文件夹.但是对中文不支持. 例如:文件夹:F:/demo 子文件夹:F:/demo/er ...
最新文章
- Lync2013与Exchange2013集成先决条件(十九)
- jQuery版AJAX简易封装
- Ask Me Anything #1 我是新晋CNCF TOC张磊,你有什么想问我的?
- 修改Sublime Text3 的侧边栏字体大小
- 专访OPPO Find X5产品经理:深耕自研芯片 以最高标准打造极致旗舰体验
- 科大讯飞2017年报:营收54亿利润5.9亿,政府补助1.18亿
- DBA_实践指南系列7_Oracle Erp R12监控OAM(案例)
- 计算机桌面屏保字幕设置,win7系统屏保设置成字幕保护的操作方法
- WPF 入门教程 TextBox详解
- 集成电路哪家强?现在就为你透彻分析!
- JanusGraph概述
- 项目实训——语音转文字功能
- matlab 系统找不到指定路径
- java itextPdf导出pdf
- SOA RPC SOAP REST
- neon 指令 c语言,NEON初步使用
- Oracle存储过程取当天为当年的第几周(自然周),以及当年总周数
- 全国计算机等级考试.pdf,全国计算机等级考试试题49662.pdf
- AcWing 844. 走迷宫
- 相控阵天线(四):阵列天线波束赋形(遗传算法、粒子群算法、进化差分算法、含python代码)
热门文章
- autojs调用java识字_autojs实现抽象类的继承
- java中Comparable实现对象的比较
- RuntimeError: [enforce fail at inline_container.cc:145] . PytorchStreamReader failed reading zip arc
- xpwifi热点设置android,教你在XP电脑中开启设置WiFi热点使用的步骤
- android键盘移动光标,在Android键盘上完成键
- HTML音乐播放没声音,网页没有声音但系统显示有声音怎么回事?如何解决?
- openssl 生成证书_CentOS7 httpd(Apache)SSL 证书部署
- 对于半圆形的点击区域该怎么做_十堰混合型塑胶跑道怎么选,橡胶跑道卷材型号...
- mybatis mysql selectkey_Mybatis示例之SelectKey的应用
- window.open不重复打开同一个名称的窗口_干货满满|Ctrl键的正确打开方式