zoukankan      html  css  js  c++  java
  • 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:demodirFileDirProfessional_32_2052.dat.bak
    E:demodirFileDirsgim_piccell.v1.bin.bak
    E:demodirFileDirsgim_picidx.v1.bin.bak

     
  • 相关阅读:
    [TC_SRM_466]DrawingBlackCrosses
    [POJ3254]Corn Fields
    [openjudge6043]哆啦A梦的时光机
    网络流 24 题汇总(LOJ 上只有 22 题???)
    Xadmin组件的url设计
    《今日简史》一、旧故事已然崩坏,新故事尚未构建
    《人类简史》二、认知革命——上帝之手的秘密
    ORM复习
    无拘无束的爱情
    使用代理导致IE host被修改问题的解决方案
  • 原文地址:https://www.cnblogs.com/200911/p/3888140.html
Copyright © 2011-2022 走看看