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

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. 团队项目:安卓端用百度地图api定位显示跑道

    因为安卓调用api对我来说是一个完全陌生的领域,我在经过很长时间终于弄出来了,这段时间还是很有成效的,我得到了历练. 第一步:注册成为百度开发者 在百度地图开放平台创建应用.地址http://lbsy ...

  2. vue-resource和axios区别

    vue-resource Vue.js是数据驱动的,这使得我们并不需要直接操作DOM,如果我们不需要使用jQuery的DOM选择器,就没有必要引入jQuery.vue-resource是Vue.js的 ...

  3. Docker in Docker的安装 路不通

    1. 先启动centos 镜像 然后 再docker cp文件 然后再执行安装报错 [root@CentOS75 ~]# docker run -it centos /bin/bash [root@1 ...

  4. 统计nginx日志的状态码

    日志格式 61.159.140.123 - - [23/Aug/2014:00:01:42 +0800] "GET /favicon.ico HTTP/1.1" 404 \ &qu ...

  5. angular浏览器滚动条滚动到指定element 触发事件

    angular.module('app').directive('ScrollTrigger', () => { return { restrict: "A", link:f ...

  6. libev学习之ev_run

    好吧,神马都init好了,loop毕竟是个环呐,在哪跑起来呢,ok,他是ev_run的工作: int ev_run (EV_P_ int flags) { #if EV_FEATURE_API ++l ...

  7. UVa 572 油田 (dfs)

    The GeoSurvComp geologic survey company is responsible for detecting underground oil deposits. GeoSu ...

  8. 【题解】 [HNOI2002]营业额统计 (Splay)

    懒得复制,戳我戳我 Solution: \(Splay\)板子题,注意可以选择相等大小 Code: //It is coded by Ning_Mew on 4.10 #include<bits ...

  9. 【hdu3709】 Balanced Number

    http://acm.hdu.edu.cn/showproblem.php?pid=3709 (题目链接) 题意 求范围${[a,b]}$之间的平衡数的个数,所谓平衡数就是以某一位为支点,两侧的力矩相 ...

  10. 【uoj34】 多项式乘法

    http://uoj.ac/problem/34 (题目链接) 题意 求两个多项式的乘积 Solution 挂个FFT板子. 细节 FFT因为要满足$n$是$2$的幂,所以注意数组大小. 代码 // ...