java 遍历指定目录下的文件夹并查找包含指定关键字的文件
2024-10-15 22:11:09
输入指定关键字,在制定目录中查找包含关键字的文件,返回包含指定关键字的文件路径。
package net.xsoftlab.baike; import java.io.File;
import java.io.FileFilter;
import java.util.ArrayList;
import java.util.List; //操作查找文件的类
public class TextSearchFile {
static int countFiles = 0;// 声明统计文件个数的变量
static int countFolders = 0;// 声明统计文件夹的变量 public static File[] searchFile(File folder, final String keyWord) {// 递归查找包含关键字的文件 File[] subFolders = folder.listFiles(new FileFilter() {// 运用内部匿名类获得文件
@Override
public boolean accept(File pathname) {// 实现FileFilter类的accept方法
if (pathname.isFile())// 如果是文件
countFiles++;
else
// 如果是目录
countFolders++;
if (pathname.isDirectory()
|| (pathname.isFile() && pathname.getName().toLowerCase().contains(keyWord.toLowerCase())))// 目录或文件包含关键字
return true;
return false;
}
}); List<File> result = new ArrayList<File>();// 声明一个集合
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程序的主入口处
File folder = new File("E:/logs");// 默认目录
String keyword = "x";
if (!folder.exists()) {// 如果文件夹不存在
System.out.println("目录不存在:" + folder.getAbsolutePath());
return;
}
File[] result = searchFile(folder, keyword);// 调用方法获得文件数组
System.out.println("在 " + folder + " 以及所有子文件时查找对象" + 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() + " ");// 显示文件绝对路径
}
}
}
最新文章
- 查看linux机器是32位还是64位的方法
- .Net , 请取服务器上的文件
- CSS3伪类选择器 图示
- 渐变颜色的进度条WGradientProgress-备用
- 翻书的效果:FMX.TSwipeTransitionEffect Animation
- Caffe Ubuntu14.04 64位 的最快安装 (cuda7.5 + cudnn7.0 2016最新)
- oracle 数据库删除表或表数据恢复问题
- Java AOP (2) runtime weaving 【Java 切面编程 (2) 运行时织入】
- LeetCode-11. 盛最多水的容器
- 初学Git命令
- 《DOM Scripting》学习笔记-——第七章 动态创建html内容
- SQL Server中的标识列
- strong vs copy
- 【LOJ】#2546. 「JSOI2018」潜入行动
- freePBX汉化方法记录——备忘
- 【纪中集训2019.3.12】Z的礼物
- E - Down or Right Codeforces Round #504 (rated, Div. 1 + Div. 2, based on VK Cup 2018 Final)
- Python使用struct处理二进制(pack和unpack用法)
- 在myeclipse中换项目的jdk版本,你需要做哪些?
- HDU3308 线段树(区间合并)
热门文章
- Python爬虫实战:2017中国最好大学排名
- 4种PHP回调函数风格
- [转帖]Kubernetes及容器编排的总体介绍【译】
- Delphi中快速修改变量名称
- maven使用阿里镜像配置文件
- 【BZOJ4500】矩阵(差分约束)
- POJ 1860 Currency Exchange / ZOJ 1544 Currency Exchange (最短路径相关,spfa求环)
- 基于asp.net + easyui框架,一步步学习easyui-datagrid——实现分页和搜索(二)
- EasyUI 格式化列
- 基础知识--:before伪元素和:after伪元素