A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小穿钉 高级黑马   /  2015-11-8 00:02  /  198 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package cn.com.propertiesdemo;


import java.util.List;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.FilenameFilter;
import java.io.IOException;
import java.util.ArrayList;


/**
* 需求:建立一个文本文件,将指定目录(包含子目录)下,指定扩展名的文件的绝对路径存储到这个文本文件中,
* 思路:1.必须进行深度遍历
*                 2.在深度遍历的过程中进行过滤,将符合条件的内容都存储到容器中
*                 3.对容器中的内容进行遍历,将绝对路径写入到文本文件中
* @author Administrator
*
*/
public class Demo_7 {


        public static void main(String[] args) {
                File dir=new File("");
                FilenameFilter filter=new FilenameFilter(){
                        public boolean accept(File dir,String name){
                                return name.endsWith(".java");
                        }
                };
                List<File> list=new ArrayList<File>();
                getFiles(dir,filter,list);
                File destFile=new File(dir,"javalist.txt");
                write2File(list,destFile);


        }
        /**
         * 对指定目录中的内容进行深度遍历,并按照指定过滤器,进行过滤
         * 将过滤后的内容存储到指定容器List中
         * @param dir
         * @param filter
         * @param list
         */


        public static void getFiles(File dir,FilenameFilter filter,List<File> list){
                //获取当前目录下所有的文件和文件夹对象
                File[] files=dir.listFiles();


                //对目录进行深度遍历
                for(File file:files){
                        //递归
                        if(file.isDirectory()){
                                getFiles(file,filter,list);
                        }else{
                                //对深度遍历的文件进行过滤器的过滤,将符合条件的File对象,存储到List集合中
                                if(filter.accept(dir, file.getName())){
                                        list.add(file);
                                }
                        }
                }
        }
        public static void write2File(List<File> list,File destFile){
                BufferedWriter bufw=null;
                try{
                        bufw=new BufferedWriter(new FileWriter(destFile));
                       
                        for(File file:list){
                                bufw.write(file.getAbsolutePath());
                                bufw.newLine();
                                bufw.flush();
                        }
                }catch(IOException e){
                        throw new RuntimeException("写入失败!");
                }finally{
                        if(bufw!=null){
                                try{
                                        bufw.close();
                                }catch(IOException e){
                                        throw new RuntimeException("关闭失败!");
                                }
                        }
                }
        }
}


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马