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

 

你可能感兴趣的:(java基础)