import java.io.File;
import java.io.FileFilter;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
class Test1{
private static final String LINE_SEPARATOR = System.getProperty("line_separator");
public static void main(String[] args) throws IOException{
//指定文件
File dir=new File("e:\java\stu_infor");
//过滤器
FileFilter filter=new FileFilterByTxt();
//使用集合来存储数据
List list=new ArrayList();
//方法:获取指定文件中的指定文件
getFileList(dir,filter,list);
//新建一个文件来存储符合过滤器条件的文件
File destFile=new File("e:\java\txtFile1.txt");
//方法:将集合中的数据输出到指定新建文件中
writeToFile(list,destFile);
}
/**
* 将集合中的数据存储到一个新建指定文件中
* @param list
* @param destFile
* @throws IOException
*/
public static void writeToFile(List list, File destFile) throws IOException {
//输出流
FileOutputStream fos=null;
try{
fos=new FileOutputStream(destFile);
for(File file:list){
String str=file.getAbsolutePath()+LINE_SEPARATOR;
fos.write(str.getBytes());
}
}finally{
if(fos!=null){
try{
fos.close();
}
catch(IOException e){
throw new RuntimeException("关闭出现错误");
}
}
}
}
/**
* 将指定后缀名的文件存储到集合中
* @param dir
* @param filter
* @param list
*/
public static void getFileList(File dir, FileFilter filter, List<File> list) {
//获取指定文件目录下的文件
File[] files=dir.listFiles();
//遍历文件目录
for(File file:files){
//判断是否是子目录,如果是的话,则遍历
if(file.isDirectory()){
getFileList(dir, filter, list);
}else{
//如果是文件的话,则使用过滤器进行条件的判断
if(filter.accept(file)){
//将符合过滤器的数据存储到集合中
list.add(file);
}
}
}
}
}