zoukankan      html  css  js  c++  java
  • IO获取指定目录及其目录下子目录

      一、需求:获取指定目录下,指定扩展名的文件(包含子目录中的)

      二、需要用到的方法

        1、FilenameFilter返回抽象路径名的定义中表示此抽象路径名的目录中的文件的数组。

           filter.accept : 对遍历到的文件进行过滤器的过滤,将符合对象的File文件   

    package keyboad;
    
    import java.io.*;
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * 需求:
     * 获取指定目录下,指定扩展名的文件(包含子目录中的)
     * 这些文件的绝对路径写入到一个文本文件中
     *
     * means:建立一个指定的扩展名的文件列表
     *思路:
     * 1、深度遍历
     * 2、需要在遍历过程总进行过滤,将符合条件的内容储存到容器中
     * 3、对容器中的内容进行遍历并将绝对路径写入到文件中
     *
     * Created by lcj on 2017/11/10.
     */
    public class practiseDemo {
        public static void main(String[] args) {
            //指定一个文件目录
            File dir = new File("D:\Repository");
            //过滤器,过滤后缀名为.jar
            FilenameFilter filter = new FilenameFilter() {
                @Override
                public boolean accept(File dir, String name) {
                    return name.endsWith(".jar");
                }
            };
            List<File> list = new ArrayList<File>();
            //执行getFiles方法,执行完将数据储存至list中
            getFiles(dir , filter , list);
            //将过滤完的文件保存至java.txt文件中
            File destFile = new File(dir,"java.txt");
            //执行wrinte2File方法
            wrinte2File(list,destFile);
        }
    
        /**
         *对指定目录中的内容进行深度遍历,并按照指定过滤器,进行过滤
         * 将过滤器后的内容存储到指定容器List中
         * @param dir
         * @param filter
         * @param list
         */
        //文件路径,FilenameFilter 过滤器文件名,将过滤掉的数据存储数组
        public static void getFiles(File dir,FilenameFilter filter,List<File> list ) {
    //listFiles 方法:返回抽象路径名的定义中表示此抽象路径名的目录中的文件的数组。
            File[] files = dir.listFiles();
            for (File file : files)///file 变量
            {
                if (file.isDirectory())
                {
                    //如果File是目录,将进行递归
                    getFiles(file,filter,list);
                }else {
                    //对遍历到的文件进行过滤器的过滤,将符合对象的File文件,存储至List集合中
                    if (filter.accept(dir,file.getName()))
                    {
                        list.add(file);
                    }
                }
            }
        }
        //什么文件写入到    写到那个文件(目的文件)
        public static void wrinte2File(List<File> list,File destFile)      //List<File>  字符流
        {
    
            BufferedWriter bufw = null;
            try {
                bufw = new BufferedWriter(new FileWriter(destFile));
                for (File file :list)
                {
                    bufw.write(file.getAbsolutePath());
                    bufw.newLine();
                    bufw.flush();
                }
            }catch (Exception e)
            {
                throw  new RuntimeException("关闭失败");
            }
            finally {
                if (bufw !=null)
                {
                    try {
                        bufw.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                        throw  new RuntimeException("关闭失败");
                    }
                }
            }
        }
    }
    
  • 相关阅读:
    40款不容错过的个人摄影设计作品集网站
    Google的全新在线地图API演示网站 More than a map
    绝对不容错过的超棒动物瞬间抓拍摄影作品
    超全超实用的Javascript类库和jQuery插件大全之一:Web印刷排版
    Java中方法重写和方法重载的6个区别?
    面试突击15:说一下HashMap底层实现?及元素添加流程?
    查询 MySQL 字段注释的 5 种方法!
    剑指Offer补充
    Cracking the Coding Interviewch11 | System Design and Memory Limits
    Cracking the Coding Interview – ch16,17,18
  • 原文地址:https://www.cnblogs.com/lcj0703/p/7825269.html
Copyright © 2011-2022 走看看