java IO_Test建立一个指定扩展名的文件的列表

package cn.itcast.iotest.demo;
import java.util.ArrayList;
import java.util.List;
import java.io.BufferedWriter;
/**
 * 获取指定目录下,指定扩展名的文件(包含子目录)
 * 	把这些文件的绝对路径存储到指定的文件中去
 * 
 * 简单说:就是建立一个指定扩展名的文件的列表
 * 
 * 思路:
 * 	1、深度遍历目录
 * 	2、遍历时进行过滤,并把过滤后的文件写入到容器中去
 *	3、遍历容器中的文件,并获取文件的绝对路径写入到文件中
 * 
 * */
import java.io.File;
import java.io.FileWriter;
import java.io.FilenameFilter;
import java.io.IOException;

public class TestIoDemo {

	public static void main(String[] args) {
		File dir=new File("e:\\java");
		FilenameFilter filter=new FilenameFilter() {
			public boolean accept(File dir, String name) {
				
				return name.endsWith(".java");
			}
		};
		List<File>list=new ArrayList<File>();
		getfile(dir, filter, list);
		File destile=new File(dir,"e:\\java");
		outfile(list, destile);
		
	}
	public static void getfile(File dir,FilenameFilter filter,List<File>list) {
		File[]files=dir.listFiles();
		for(File file:files) {
			if(file.isDirectory())
				getfile(file, filter, list);
			else {
				if(filter.accept(dir, file.getName()))
				list.add(file);	 			
			}	
		}	
	}
	public static void outfile(List<File>list,File destile){
		BufferedWriter buf=null;
		try {
			buf=new BufferedWriter(new FileWriter(destile));
			for(File file:list) {
				buf.write(file.getAbsolutePath());
				buf.newLine();
				buf.flush();
			}
		} catch (IOException e) {	
			throw new RuntimeException("写入异常");
		}finally {
			if(buf!=null)
				try {
					buf.close();
				} catch (IOException e) {
					
					throw new RuntimeException("关闭异常");
				}
		}
	}
}

猜你喜欢

转载自blog.csdn.net/TDOA1024/article/details/82624398