您的位置:首页 > 其它

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);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: