输入指定关键字,在制定目录中查找包含关键字的文件,返回包含指定关键字的文件路径。

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() + " ");// 显示文件绝对路径
}
}
}

java 遍历指定目录下的文件夹并查找包含指定关键字的文件的更多相关文章

  1. Java遍历一个目录下的所有文件

    Java遍历一个目录下的所有文件   Java工具中为我们提供了一个用于管理文件系统的类,这个类就是File类,File类与其他流类不同的是,流类关心的是文件的内容,而File类关心的是磁盘上文件的存 ...

  2. php递归查找指定目录下及子文件名称是否包含中文空格及括号

    //php递归查找该目录下及子文件名称是否包含中文空格括号 function searchDir($path,&$data){ if(is_dir($path)){ $dp=dir($path ...

  3. bash 在指定目录查找包含特定关键字的文件

    比如我们要在目录/usr/local/nginx/conf/vhost/下查找baidu.com这个关键字的文件 方法1: find /usr/local/nginx/conf/vhost/ -exe ...

  4. java中把文件拷贝到指定目录下最简单几种方法

    java中把文件拷贝到指定目录下最简单几种方法   String savePath = "D:/file";// 文件保存到d盘的file目录下 File savefile = n ...

  5. Python批量删除指定目录下的指定类型的文件

    Python作为一种脚本语言.其很适合文件级的各种操作.以下的代码能够批量删除指定目录下的所有特定类型(CSV类型)的文件. import sys, csv , operator import os ...

  6. Java基础---Java---IO流-----File 类、递归、删除一个带内容的目录、列出指定目录下文件夹、FilenameFilte

    File 类 用来将文件或者文件夹封装成对象 方便对文件与文件夹进行操作. File对象可以作为参数传递给流的构造函数 流只用操作数据,而封装数据的文件只能用File类 File类常见方法: 1.创建 ...

  7. java-IO流(File对象-深度遍历指定目录下的文件夹和文件)

    需求:遍历这个树状结构 File(String pathname) '\\'为了转义'\' // 通过抽象路径pathname 创建一个新的文件或者目录 File parent = new File( ...

  8. java压缩指定目录下的所有文件和文件夹的代码

    将代码过程较好的代码段备份一下,下边资料是关于java压缩指定目录下的所有文件和文件夹的代码,希望对码农有帮助. String sourceDir="E:\test";int pa ...

  9. Java基础知识强化之IO流笔记14:递归之输出指定目录下所有java文件绝对路径的案例

    1. 需求:输出指定目录下的所以.java结尾文件的绝对路径的案例:  分析:  A:封装目录  B:获取该目录下的所有文件和文件夹的File数组  C:遍历这个File数组,得到每一个File对象的 ...

随机推荐

  1. Linux 基础一(系统分区、格式化与挂载)

    1.Linux 基础之系统分区与格式化 讲分区之前,先说一下硬盘结构:硬盘(机械)的横截面是一个圆,并且被分成等大小的扇区,每个扇区的大小是 512Byte,其中有 446Byte 被用来存储启动信息 ...

  2. Ubuntu18.04 安装后的简单实用设置[未完成]

    1. 安装完成. 2. 更新 sudo apt-get update 3. 修改vi 放置键盘错位的问题 编辑文件/etc/vim/vimrc.tiny 将“compatible”改成“nocompa ...

  3. robotframework+Selenium2Library 模态窗口的处理

    原文链接:https://www.cnblogs.com/zuola/p/5750018.html   所谓模态窗口,就是指除非采取有效的关闭手段,用户的鼠标焦点或者输入光标将一直停留在其上的对话框. ...

  4. #35 string(缩点+动态规划)

    容易发现有了交换相邻字符的操作后,只要字符串所含有的字符种类和数量相同其就是等价的.这样的状态只有n^3级别,将其抽象成点子串变换抽象成边后就是求最长路径了,缩点dp解决. 码量巨大,不是很明白要怎样 ...

  5. SPOJ DQUERY - D-query (莫队算法|主席树|离线树状数组)

    DQUERY - D-query Given a sequence of n numbers a1, a2, ..., an and a number of d-queries. A d-query ...

  6. MT【178】平移不变性

    (2008年北大自招)已知$a_1,a_2,a_3;b_1,b_2,b_3$满足$a_1+a_2+a_3=b_1+b_2+b_3$$a_1a_2+a_2a_3+a_3a_1=b_1b_2+b_2b_3 ...

  7. 【BZOJ1898】[ZJOI2005]沼泽鳄鱼(矩阵快速幂,动态规划)

    [BZOJ1898][ZJOI2005]沼泽鳄鱼(矩阵快速幂,动态规划) 题面 BZOJ 洛谷 题解 先吐槽,说好了的鳄鱼呢,题面里面全是食人鱼 看到数据范围一眼想到矩乘. 先不考虑食人鱼的问题,直接 ...

  8. (转)win下修改jdk环境变量后,java版本不变 java -version

    背景:在windows下安装了多个版本的jdk,发现修改环境变量无法切换. win 7环境下修改JAVA_HOME后,在命令行执行:java -version 发现版本没有变化,以为需要重启才行,就把 ...

  9. 《剑指offer》— JavaScript(33)丑数

    丑数 题目描述 把只包含质因子2.3和5的数称作丑数(Ugly Number).例如6.8都是丑数,但14不是,因为它包含因子7. 习惯上我们把1当做是第一个丑数.求按从小到大的顺序的第N个丑数. 思 ...

  10. word 公式为图片