File练习
2016-09-17 14:38
232 查看
import java.io.File; import java.util.ArrayList; import java.util.List; import cn.qujianlei.filter.FilterBySuffix; public class IOTest { public static void main(String[] args) { //获取一个想要的指定文件的集合,获取指定目录下的(包含子目录).java的文件对象,并存储到集合中。 /* * 思路: * 1.既然包含子目录,就需要递归 * 2.在递归过程中需要过滤器 * 3.满足条件,都添加到集合中。 */ File dir = new File("c:\\"); List<File> list = fileList(dir,".java"); for(File file:list){ System.out.println(file); } } /** * 定义一个获取指定过滤器条件的集合 */ public static List<File> fileList(File dir,String suffix){ //1.定义集合 List<File> list = new ArrayList<File>(); //2.定义过滤器 FilterBySuffix filter = new FilterBySuffix(suffix); //3.调用getFileList方法 getFileList(dir,list,filter); return list; } /** * 对指定的目录进行递归 * * 多级目录下都要用到相同的集合和过滤器, * 那么不要在递归方法中定义,而是不断的进行传递 * * @param dir 需要遍历的目录 * @param list 用于存储符合条件的File对象 * @param filter 接受指定的过滤器 */ public static void getFileList(File dir,List<File> list, FilterBySuffix filter){ //1.通过ListFiles方法,获取dir当前下的所有文件和文件夹对象 File[] files = dir.listFiles(); //2.遍历该数组 for(File f:files){ //3.判断是否是文件夹,如果是,递归,如果不是,那就是文件,那就需要对文件进行过滤 if(f.isDirectory()){ getFileList(f, list, filter); }else{ //4.通过过滤器对文件进行过滤 if(filter.accept(f)){ list.add(f); } } } } }
import java.io.File; import java.io.FileFilter; /** * 根据文件名的后缀名的过滤器 * @author dell * */ public class FilterBySuffix implements FileFilter { private String suffix; public FilterBySuffix() { super(); } public FilterBySuffix(String suffix) { super(); this.suffix = suffix; } /** * @param name:被遍历目录中的文件夹或者文件的名称。 */ @Override public boolean accept(File pathname) { return pathname.getName().endsWith(suffix); } }
相关文章推荐
- 如何在Windows系统上用抓包软件Wireshark截获iPhone等网络通讯数据
- Android下拉刷新代码完全解析,完全解读大神代码,解决两个小bug
- Docker之cgroup篇
- 一篇 介绍 Socket 和 WebSocket 的很好的帖子
- 判断AccessibilityService服务是否已经启动
- 栈和队列常考面试题(二)
- 模拟网页点击事件
- 软件工程第一次作业
- java.猜数字游戏
- Maximum Product of Word Lengths
- 数据库事务
- C语言实现封装,继承
- android里,addContentView()动态增加view控件,并实现控件的顶部,中间,底部布局
- 【leetCode】Maximum Gap
- Android 利用addView 动态给Activity添加View组件
- hibernate.cfg.xml的配置
- JAVA进阶3.3——帮助文档的使用
- C#的排列组合类
- HashMap、HashTable、ArrayList、LinkedList、Vector区别
- SSL安全证书-概念解析