用深度优先和广度优先遍历文件夹下符合条件的文件
来源:互联网 发布:魔兽对战平台mac版 编辑:程序博客网 时间:2024/04/29 02:03
第一步:需要有一个万能过滤器:MyFileFilter.java
package com.ten.practice.test15;import java.io.File;import java.io.FilenameFilter;public class MyFileFilter implements FilenameFilter { //万能过滤器 private String suffix; public MyFileFilter(String suffix) { this.suffix = suffix; } @Override public boolean accept(File dir, String name) { File f = new File(dir, name); if(f.isFile()){ return f.getName().endsWith(suffix);//符合要求的文件返回 } return true;//是文件也返回 }}
第二步:需要一个MyDFS.java来深度优先搜索某一文件夹
package com.ten.practice.test15;import java.io.File;import java.util.ArrayList;public class MyDFS { private static MyFileFilter myFileter = null; public static ArrayList<String> myDFS(File path, String suffix){ //list用于返回符合条件的文件 ArrayList<String> list = new ArrayList<String>(); //调用配置好的过滤器 myFileter = new MyFileFilter(suffix); depth(path, suffix, list); return list; } private static void depth(File argPath, String argSuffix, ArrayList<String> argList) { File[] files = argPath.listFiles(myFileter); for(File f : files){ if(f.isDirectory()){//是文件夹,直接作为需要检索的文件夹进行检索 depth(f, argSuffix, argList); }else{ argList.add(f.getAbsolutePath());//是文件则入list集合 } } }}
第三步:需要一个MyBFS.java来广度优先搜索某一文件夹
package com.ten.practice.test15;import java.io.File;import java.util.ArrayDeque;import java.util.ArrayList;public class MyBFS { private static MyFileFilter myFilter= null; public static ArrayList<String> myBFS(File argPath, String argSuffix){ //myList用来保存过滤出来的文件 ArrayList<String> myList = new ArrayList<String>(); //queue保存路径 ArrayDeque<File> queue = new ArrayDeque<File>(); //初始化过滤器 myFilter = new MyFileFilter(argSuffix); //把要检索的文件夹路径放入队列中 queue.offer(argPath); while(!queue.isEmpty()){//判断队列不为空 argPath= queue.poll();//把队首作为当前检索的路径 File[] files = argPath.listFiles(myFilter);//获得当前检索的路径所有的子文件和文件夹 for(File f:files){ if(f.isFile()){ myList.add(f.getAbsolutePath());//是文件入list集合 }else{ queue.offer(f);//是文件夹入queue作为新的需要检索文件夹的路径 } } } return myList; }}
第四步:需要一个TestFileFilter.java来测试
package com.ten.practice.test15;import java.io.File;import java.util.ArrayList;public class TestFileFilter { public static void main(String[] args) { ArrayList<String> list = new ArrayList<String>(); File path = new File("D:\\workplace\\Myeclipse\\Practice\\src\\com\\ten\\practice\\test14"); String suffix = ".txt"; list = MyDFS.myDFS(path, suffix); for(String s:list){ System.out.println(s); } System.out.println("--------分割线@_@也装逼---------"); list = MyBFS.myBFS(path, suffix); for(String s:list){ System.out.println(s); } }}
0 0
- 用深度优先和广度优先遍历文件夹下符合条件的文件
- 广度优先遍历文件夹和深度递归遍历文件夹
- 图的遍历:深度优先遍历和广度优先遍历
- 广度优先遍历和深度优先遍历
- 深度优先遍历和广度优先遍历
- 深度优先遍历 和 广度优先遍历
- 深度优先遍历和广度优先遍历
- 深度优先遍历和广度优先遍历
- 深度优先遍历和广度优先遍历
- 深度优先遍历和广度优先遍历
- 深度优先遍历和广度优先遍历
- 图的深度优先遍历和广度优先遍历算法
- 二叉树的深度优先遍历和广度优先遍历
- 图的深度优先遍历和广度优先遍历实现
- 普通树的深度优先遍历和广度优先遍历
- 二叉树的深度优先遍历和广度优先遍历
- 图的深度优先遍历和广度优先遍历
- 图的深度优先遍历和广度优先遍历
- Android加载图片的工具类
- LeetCode Single Number III 异或+补码
- 网球循环赛日程表--多边形法
- 软件工程(C编码实践篇)
- Android 改变顶部状态栏的颜色
- 用深度优先和广度优先遍历文件夹下符合条件的文件
- 参与流片是一种怎样的体验?
- API
- 多种GUI对图像进行简单操作(qt【linux和win7环境】、MFC、MATLAB)
- pthread_create 未定义的引用
- 设计一个模块,功能是列出系统中所有内核线程的程序名、PID号和进程状态。
- Cacti-rrd安装
- 14,include全面解刨
- 个人博客&作业部落