// 工具方法
private static FilenameFilter getFilter(final String mode) {
return new FilenameFilter() {
Pattern pattern; {
pattern = Pattern.compile(mode);
} public boolean accept(File file, String name) {
return pattern.matcher(name).matches();
} };
} // 调用该接口, 可修改为返回 fs : File[]
public static void find(File dir) {
if (dir.isDirectory()) {
File[] tfs = dir.listFiles();
// 复制子目录
File[] cfs = new File[tfs.length];
int count = 0;
for (File fs : tfs) {
if (fs.isDirectory()) {
cfs[count++] = fs;
}
}
// 递归遍历子目录
for (int i = 0; i < count; i++) {
find(cfs[i]);
}
// 将该目录下的所有文件夹匹配正则表达式
File[] fs = dir.listFiles(getFilter(".+\\.java"));
/*
// 由于需要递归, 所以不能在此创建匿名内部类, 而应使用单例
fs = dir.listFiles(
new FilenameFilter() {
Pattern pattern; // 匿名内部类的构造块
{
pattern = Pattern.compile(".+\\.java");
} // 对于一个 File 数组, 将所有元素依次传入该回调函数, 以询问是否同意该元素加入集合, 其中 namne 等价于 f.getName()
public boolean accept(File f, String name) {
return pattern.matcher(name).matches();
}
});
*/
// 打印当前已筛选的文件的全路径
for(File f : fs) {
try{
System.out.println(f.getCanonicalPath());
} catch(IOException e) {
e.printStackTrace();
}
}
}
}

  

[Java] [查找文件] [递归]]的更多相关文章

  1. Java 7 中 NIO.2 的使用——文件递归操作

    众所周知,递归编程是一项有争议的技术,因为它需要大量的内存,但是它能简化一些编程任务.基本上,一个递归操作都是程序调用自己传递参数修改的值或者参数传递到当前的程序循环中.递归编程通常用来计算阶乘斐波那 ...

  2. JAVA 遍历文件夹下的所有文件(递归调用和非递归调用)

    JAVA 遍历文件夹下的所有文件(递归调用和非递归调用) 1.不使用递归的方法调用. public void traverseFolder1(String path) { int fileNum = ...

  3. JAVA之旅(二十九)——文件递归,File结束练习,Properties,Properties存取配置文件,load,Properties的小练习

    JAVA之旅(二十九)--文件递归,File结束练习,Properties,Properties存取配置文件,load,Properties的小练习 我们继续学习File 一.文件递归 我们可以来实现 ...

  4. Java 多线程查找文件中的内容

    学过了操作系统,突然不知道多线程有什么用了. 看了一下百度,发现多线程,可以提升系统利用率 在系统进行IO操作的时候,CPU可以处理一些其他的东西,等IO读取到内存后,CPU再处理之前的操作. 总之可 ...

  5. 【笔试题】Java 中如何递归显示一个目录下面的所有目录和文件?

    笔试题 Java 中如何递归显示一个目录下面的所有目录和文件? import java.io.File; public class Test { private static void showDir ...

  6. 用Java写一个递归遍历目录下面的所有文件

    java获取文件的属性如文件大小和修改时间: long mysize = file.length();long lastModified = file.lastModified();System.ou ...

  7. 【转】Java实现折半查找(二分查找)的递归和非递归算法

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://wintys.blog.51cto.com/425414/94051 Java二分 ...

  8. Net文件递归查找并保存

    原理:遍历当前文件夹的子文件,保存遍历文件夹下的所有文件 主要方法(2个): //获取文件夹下的所有文件 并保存 string[] path = Directory.GetFiles(NeedFile ...

  9. File类之在指定目录中查找文件

    package IoDemo; import java.io.File; /** * @Title:FileDemo2 * @Description:在指定的目录中查找文件 * @author Cra ...

随机推荐

  1. 自学Python之路-Python并发编程+数据库+前端

    自学Python之路-Python并发编程+数据库+前端 自学Python之路[第一回]:1.11.2 1.3

  2. 【BZOJ2125】最短路(仙人掌,圆方树)

    [BZOJ2125]最短路(仙人掌,圆方树) 题面 BZOJ 求仙人掌上两点间的最短路 题解 终于要构建圆方树啦 首先构建出圆方树,因为是仙人掌,和一般图可以稍微的不一样 直接\(tarjan\)缩点 ...

  3. bzoj3900 交换茸角

    题目链接 思路 看到n比较小,可以状压. 可以先考虑什么情况下会无法平衡.显然就是排完序之后两两相邻的不能满足小于等于c的限制. 状态.用f[i]来表示i集合中的鹿完成交换所需要的次数. 预处理.无法 ...

  4. [luogu3369][普通平衡树]

    题目链接 思路 模板 只是有几个容易出错的地方 第45行容易忘记 第54行里面的cnt--和siz--容易忘记 第56行是根据id判断不是val 第60行siz--容易忘记 第64行是siz+1不是s ...

  5. 原生js实现each方法

    首先我们了解一下什么是callback函数 CALLBACK,即回调函数,是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就 ...

  6. Redis高并发和快速的原因

    一.Redis的高并发和快速原因 1.redis是基于内存的,内存的读写速度非常快: 2.redis是单线程的,省去了很多上下文切换线程的时间:   3.redis使用多路复用技术,可以处理并发的连接 ...

  7. #ifndef HeaderName_h #define HeaderName_h #endif 使用详解(转)

    原文:#ifndef HeaderName_h #define HeaderName_h #endif 使用详解 想必很多人都看到过头文件中写有:#ifndef HeaderName_h       ...

  8. Comet——反向Ajax (基础知识)

    Comet:服务器推送,与ajax页面向服务器请求数据相反.几乎可以实时将数据推送到客户端. 但本质一样:浏览器向服务器发起请求,服务器响应请求 Comet实现方式:长轮询.HTTP流 1.长轮询—— ...

  9. postman接口测试

    拿到API,直接拖到postman里面,修改一下params,send之后查看结果返回 说明一下: 1.get的内容,写入测试URL 和API地址 2.点击bulkEdit,编辑请求的key+valu ...

  10. Android Studio 每次运行都会再下载一遍,修改

    Android Studio 每次运行都会再下载一遍 把 gradle 设置 use local gradle distribution