package com.henu.io;import java.io.File;
/**??????????????????????????????????????????*不使用文件过滤器,则看文件的绝对路径,如果这个路径中没有.java文件,则搜索不出**/
public class Demo05_递归实现文件搜索 {public static void main(String[] args) {File file = new File("F:\\workspace\\第一阶段\\days01\\Days07\\src\\com\\henu\\io");
//      printDir(file);printDir(file, ".java");}//搜索F:\workspace\第一阶段\days01\Days07 目录中的.java 文件。public static void printDir(File f) {File[] files  = f.listFiles();for (File file : files) {boolean b = file.isFile();if (b) {//endsWith后缀,if (file.getName().endsWith(".xml")) {//public String getName()返回由此抽象路径名表示的文件或目录的名称。System.out.println(file);}else {printDir(file);}}}}public static void printDir(File f, String suffix) {File[] files  = f.listFiles();for (File file : files) {boolean b = file.isFile();if (b) {//endsWith后缀,if (file.getName().endsWith(suffix)) {//public String getName()返回由此抽象路径名表示的文件或目录的名称。System.out.println(file);}else {printDir(file,suffix);}}}}}
package com.henu.io;import java.io.File;
import java.io.FileFilter;/**   java.io.FileFilter是一个接口,是File的过滤器。 该接口的对象可以传递给File类的listFiles(FileFilter) 作为参数, 接口中只有一个方法。boolean accept(File pathname) :测试pathname是否应该包含在当前File目录中,符合则返回true。分析:1.接口作为参数,需要传递子类对象,重写其中方法。我们选择匿名内部类方式,比较简单。2.accept方法,参数为File,表示当前File下所有的子文件和子目录。保留住则返回true,过滤掉则返回false。保留规则:1.要么是.java文件。2.要么是目录,用于继续遍历。3.通过过滤器的作用,listFiles(FileFilter)返回的数组元素中,子文件对象都是符合条件的,可以直接打印。*/
public class Demo06_FileFilter文件过滤器优化 {public static void main(String[] args) {File file = new File("F:\\workspace\\第一阶段\\days01\\Days07\\src\\com");printDir(file,".java");}public static void printDir(File f, String string) {//1.列出该file下的所有文件和目录File[] listFiles = f.listFiles(new FileFilter() {@Overridepublic boolean accept(File pathname) {//当file名是以指定后缀结尾的或者file是个目录,则返回true//true当且仅当该抽象路径名表示的文件存在且为目录时; false否则 boolean b = f.getName().endsWith(string) || f.isDirectory();return b;}});for (File file : listFiles) {System.out.println(file);}//2.循环遍历file数组for (File file : listFiles) {boolean b = file.isFile();if (b) {System.out.println(file);}else {printDir(file, string);}}}}
package com.henu.io;import java.io.File;public class Demo07_FileFilter使用Lambda优化 {public static void main(String[] args) {File file = new File("F:\\workspace\\第一阶段\\days01\\Days07\\src\\com\\henu\\io");printDir(file,".java");}public static void printDir(File f,String suffix) {//1.列出该file下的所有文件和目录   FileFilter是只有一个方法的接口,因此可以用lambda表达式简写。File[] files = f.listFiles((file) -> {return file.getName().endsWith(suffix)||file.isDirectory();});for (File file2 : files) {boolean b = file2.isFile();if (b) {System.out.println(file2);}else {printDir(f, suffix);}}}
}

java基础----递归实现文件搜索相关推荐

  1. java删减pdf内容合并_[Java教程]Java基础之PDF文件的合并

    [Java教程]Java基础之PDF文件的合并 0 2017-07-28 00:00:45 1.首先下载一个jar包:pdfbox-app-1.7.1.jar 2.代码如下:package com;i ...

  2. 87-Java方法递归形式、算法流程总结、递归常见案例、递归经典案例-猴子吃桃问题、非规律化递归案例-文件搜索、啤酒问题

    方法递归 一.递归的形式和特点 1.什么是方法递归? 方法直接调用自己或者间接调用自己的形式称为方法递归(recursion). 递归作为一种算法在程序设计语言中广泛应用. 2.递归的形式 直接递归: ...

  3. java用递归删除文件夹_Java中通过递归调用删除文件夹下所有文件

    摘自 : http://blog.sina.com.cn/s/blog_79333b2c0100xiu4.html import java.io.File; public class FileTest ...

  4. java基础----递归

    package com.henu.io;import java.util.Iterator;/** •递归:指在当前方法内调用自己的这种现象.* 注意:递归必须要有结束条件*/ public clas ...

  5. Java 基础 — 数据流、文件和 I/O

    概述 1.数据流 在电脑上的数据有三种存储方式:外存.内存和缓存.数据流是一组有序.有起点和终点的字节的数据序列,包括输入流和输出流.Java 数据流分为两种:字节流(Byte)和字符流(Charac ...

  6. Java基础之写文件——缓冲区中的多条记录(PrimesToFile3)

    控制台程序,上一条博文(PrimesToFile2)每次将一个素数写入到文件中,所以效率不是很高.最好是使用更大的缓冲区并加载多个素数. 本例重复使用三个不同的视图缓冲区加载字节缓冲区并尽可能加入更多 ...

  7. java基础进阶(文件列表,线程,线程组)编程实例(4篇)

    此处刊登代码均测试通过,完全准确! import java.io.*; public class DirList{ public static void main(String[] args){ tr ...

  8. Java基础之写文件——使用Formatter对象加载缓冲区(UsingAFormatter)

    控制台程序,使用Formatter对象将写入文件的数据准备好. 使用Formatter对象的format()方法,将数据值格式化到视图缓冲区charBuf中. 1 import static java ...

  9. Java基础之PDF文件的合并

    1.首先下载一个jar包:pdfbox-app-1.7.1.jar 2.代码如下: package com;import java.io.File; import java.io.IOExceptio ...

最新文章

  1. 互联网惨遭Struts高危漏洞摧残
  2. 安装lua及问题解决
  3. 优秀交互设计的 UI 原则
  4. poj-1284(Primitive Roots)(欧拉函数运用)
  5. db2 replace函数的用法_SQL基础知识:常用字符处理函数
  6. python面试题总结(2)--编码规范
  7. 用四位led数码管作显示器的篮球比赛24秒计时器求c语言代码,单片机编程控制LED七段数码管作显示的篮球赛计时计分系统...
  8. Win7 64位下配置jboss7
  9. 全球10大受欢迎的顶级编程语言与薪资水平
  10. zabbix 5.0所有依赖包_一杯茶的时间,上手Zabbix
  11. Javascript s04
  12. Linux 定时任务详解
  13. 时间序列预测算法总结
  14. 第二章-信源与信息熵(一)
  15. python学英语库_交流学英语的经验-js焦点图怎么写-WinFrom控件库|.net开源控件库|HZHControls官网...
  16. DHCP服务器搭建操作步骤
  17. react笔记_07组件实例化对象的三大属性
  18. Ubuntu安装以及简单设置
  19. 有人不理解,有人不屑,到底什么是UXD
  20. HTML5前端视频_Vue核心技术视频-张晓飞-专题视频课程

热门文章

  1. CodeForces - 1334D Minimum Euler Cycle(构造+模拟)
  2. 牛客 - 树上博弈(思维)
  3. POJ - 3714 Raid(平面最近点对模板题,几何)
  4. python巡检脚本juniper_JUNIPER设备日常维护巡检命令
  5. EOJ_1024_表达式
  6. Prufer序列相关
  7. Duilib教程-自动布局1
  8. 5.IDA-文本搜索、二进制搜索(16进制字节序列)、替换16进制
  9. 在VC中如何找到崩溃的源头
  10. cocos2d-x游戏实例(2)-主角根据输入移动