首页 > 代码库 > java基础知识回顾之javaIO类--File类应用:获取指定目录下面的指定扩展名的文件,将文件的绝对路径写入到目的文件当中

java基础知识回顾之javaIO类--File类应用:获取指定目录下面的指定扩展名的文件,将文件的绝对路径写入到目的文件当中

/**
 * File文件综合应用
 * 需求:获取指定目录下面,指定扩展名的文件,将文件的绝对路径写到文本文件当中。
 *
 * 思路:1.需要深度遍历。--递归
 * 2.遍历的过程中过滤指定扩展名的文件--过滤器FileNameFilter,将文件存入容器中
 * 3.将容器中的内容遍历,写入到指定文件中
 *
 */

代码:

 FilenameFilter 过滤器:

package com.lp.ecjtu.File.filter;import java.io.File;import java.io.FilenameFilter;public class FileterByJava implements FilenameFilter {        private String SufixName;//传入过滤的名称    public FileterByJava(String SufixName){        this.SufixName = SufixName;    }    @Override    public boolean accept(File dir, String name) {        System.out.println("dir:"+dir+"_____"+"name:"+name);        return name.endsWith(SufixName);    }}

主程序:程序都有注释,请看程序

import java.io.BufferedWriter;import java.io.File;import java.io.FileWriter;import java.io.FilenameFilter;import java.io.IOException;import java.util.ArrayList;import java.util.List;/** * File文件综合应用 * 需求:获取指定目录下面,指定扩展名的文件,将文件的绝对路径写到文本文件当中。 *  * 思路:1.需要深度遍历。--递归 * 2.遍历的过程中过滤指定扩展名的文件--过滤器FileNameFilter,将文件存入容器中 * 3.将容器中的内容遍历,写入到指定文件中 * */public class FileNameFileterWriteFile {    /**     * @param args     */    public static void main(String[] args) {        File dir = new File("E:\\demodir");        FilenameFilter fileter = new FileterByJava(".bak");//过滤.bak文件        List<File>fileList = new ArrayList<File>();        getFileList(dir,fileter,fileList);        File desFile = new File(dir, "FileList.txt");        write2File(fileList, desFile);    }    /**     *      * @param dir 需要遍历的目录     * @param filter 过滤满足条件的文件     * @param fileList 存放符合条件的容器     */    public static void getFileList(File dir,FilenameFilter filter,List<File>fileList){        if(dir.exists()){            File[] files = dir.listFiles();//找到目录下面的所有文件            for(File file:files){                //递归                if(file.isDirectory()){                    getFileList(file,filter,fileList);                }else{                    //对遍历的文件进行过滤,符合条件的放入List集合中                    if(filter.accept(dir, file.getName())){                        fileList.add(file);                    }                }            }                    }    }    /**     * 将容器中的文件遍历,写入到目的文件中     * @param list  存放满足条件的文件的集合     * @param desFile 要写入的目的文件     */    public static void write2File(List<File>fileList,File desFile){        BufferedWriter bw = null;        try {            //使用字符流写入到目的文件中            bw = new BufferedWriter(new FileWriter(desFile));            //遍历List集合            for(File file:fileList){                bw.write(file.getAbsolutePath());//写入目的文件绝对路径                bw.newLine();                bw.flush();            }                    } catch (IOException e) {            e.printStackTrace();        }finally{            try {                if(bw != null){                    bw.close();                }            } catch (IOException e) {                e.printStackTrace();            }        }    }}

输出:在指定的目录下面创建目的文件:FileList.txt,里面存放:

E:\demodir\FileDir\Professional_32_2052.dat.bak
E:\demodir\FileDir\sgim_piccell.v1.bin.bak
E:\demodir\FileDir\sgim_picidx.v1.bin.bak