zoukankan      html  css  js  c++  java
  • 34 java 文件过滤 FileFilter

    package com.da.tool.util;
    
    import org.apache.commons.io.filefilter.RegexFileFilter;
    
    import java.io.File;
    import java.io.FileFilter;
    import java.io.FilenameFilter;
    
    /**
     * java 的 FileFilter和FilenameFilter测试使用
     */
    public class FileFilterExample {
    
        /**
         * 通过文件后缀过滤文件(仅查询后缀)
         * 功能可扩展点
         * 1、可针对文件、目录进行按照类型进行查找,实现特有的逻辑
         * 2、可根据此功能抽象一个借口,采用不同实现,进行不同场景的文件过滤
         * 3、对于复杂场景的文件过滤
         * 4、nameSuffix可定义为多个
         */
        static class FileFilterByNameSuffix implements FileFilter{
    
            private String nameSuffix;
    
            public FileFilterByNameSuffix(String nameSuffix) {
                this.nameSuffix = nameSuffix;
            }
    
            @Override
            public boolean accept(File file) {
    
                Boolean accept = false;
    
                if(file.getName().endsWith(nameSuffix)){
                    accept = true;
                }
                return accept;
            }
        }
    
        /**
         * 通过文件后缀过滤文件
         */
       static class FileNameFilterByNameSuffix implements  FilenameFilter{
            private String nameSuffix;
    
            public FileNameFilterByNameSuffix(String nameSuffix) {
                this.nameSuffix = nameSuffix;
            }
    
            @Override
            public boolean accept(File dir, String name) {
                return name.endsWith(nameSuffix);
            }
        }
    
    
        public static void main(String[] args) {
    
            String path ="D:\project\da-tool\src\main\java\com\da\tool\util";
    
            File file = new File(path);
            //1、实现FileFilter
            File [] files =file.listFiles(new FileFilterByNameSuffix(".java"));
            for (File file1 : files) {
                System.out.println(file1.getPath());
            }
            //2、实现FilenameFilter
            files =file.listFiles(new FileNameFilterByNameSuffix(".java"));
            for (File file1 : files) {
                System.out.println(file1.getPath());
            }
            //3、java提供正则过滤
            files =file.listFiles((FileFilter) new RegexFileFilter(".*.java"));
            for (File file1 : files) {
                System.out.println(file1.getPath());
            }
            //其他:PatternFilenameFilter   JarFilter
    
        }
    }
  • 相关阅读:
    Python-产生随机长度的密码
    Python-双色球
    Python-产生手机号码
    Word操作笔记
    1035 最长的循环节
    B. Recover the String
    uva11752 The Super Powers
    UVA11754
    GCD
    D. Persistent Bookcase(Codeforces Round #368 (Div. 2))
  • 原文地址:https://www.cnblogs.com/yangh2016/p/6519859.html
Copyright © 2011-2022 走看看