Class RegexFileFilter

  • All Implemented Interfaces:
    java.io.FileFilter, java.io.FilenameFilter, java.io.Serializable, java.nio.file.FileVisitor<java.nio.file.Path>, PathFilter, PathVisitor, IOFileFilter

    public class RegexFileFilter
    extends AbstractFileFilter
    implements java.io.Serializable
    Filters files using supplied regular expression(s).

    See java.util.regex.Pattern for regex matching rules.

    Using Classic IO

    e.g.

     File dir = FileUtils.current();
     FileFilter fileFilter = new RegexFileFilter("^.*[tT]est(-\\d+)?\\.java$");
     File[] files = dir.listFiles(fileFilter);
     for (String file : files) {
         System.out.println(file);
     }
     

    Using NIO

     final Path dir = PathUtils.current();
     final AccumulatorPathVisitor visitor = AccumulatorPathVisitor.withLongCounters(new RegexFileFilter("^.*[tT]est(-\\d+)?\\.java$"));
     //
     // Walk one dir
     Files.walkFileTree(dir, Collections.emptySet(), 1, visitor);
     System.out.println(visitor.getPathCounters());
     System.out.println(visitor.getFileList());
     //
     visitor.getPathCounters().reset();
     //
     // Walk dir tree
     Files.walkFileTree(dir, visitor);
     System.out.println(visitor.getPathCounters());
     System.out.println(visitor.getDirList());
     System.out.println(visitor.getFileList());
     

    Deprecating Serialization

    Serialization is deprecated and will be removed in 3.0.

    Since:
    1.4
    See Also:
    Serialized Form
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private java.util.function.Function<java.nio.file.Path,​java.lang.String> pathToString
      How convert a path to a string.
      private java.util.regex.Pattern pattern
      The regular expression pattern that will be used to match file names.
      private static long serialVersionUID  
    • Constructor Summary

      Constructors 
      Constructor Description
      RegexFileFilter​(java.lang.String pattern)
      Constructs a new regular expression filter.
      RegexFileFilter​(java.lang.String pattern, int flags)
      Constructs a new regular expression filter with the specified flags.
      RegexFileFilter​(java.lang.String pattern, IOCase ioCase)
      Constructs a new regular expression filter with the specified flags case sensitivity.
      RegexFileFilter​(java.util.regex.Pattern pattern)
      Constructs a new regular expression filter for a compiled regular expression
      RegexFileFilter​(java.util.regex.Pattern pattern, java.util.function.Function<java.nio.file.Path,​java.lang.String> pathToString)
      Constructs a new regular expression filter for a compiled regular expression
    • Field Detail

      • pattern

        private final java.util.regex.Pattern pattern
        The regular expression pattern that will be used to match file names.
      • pathToString

        private final java.util.function.Function<java.nio.file.Path,​java.lang.String> pathToString
        How convert a path to a string.
    • Constructor Detail

      • RegexFileFilter

        public RegexFileFilter​(java.util.regex.Pattern pattern)
        Constructs a new regular expression filter for a compiled regular expression
        Parameters:
        pattern - regular expression to match.
        Throws:
        java.lang.NullPointerException - if the pattern is null.
      • RegexFileFilter

        public RegexFileFilter​(java.util.regex.Pattern pattern,
                               java.util.function.Function<java.nio.file.Path,​java.lang.String> pathToString)
        Constructs a new regular expression filter for a compiled regular expression
        Parameters:
        pattern - regular expression to match.
        pathToString - How convert a path to a string.
        Throws:
        java.lang.NullPointerException - if the pattern is null.
        Since:
        2.10.0
      • RegexFileFilter

        public RegexFileFilter​(java.lang.String pattern)
        Constructs a new regular expression filter.
        Parameters:
        pattern - regular string expression to match
        Throws:
        java.lang.NullPointerException - if the pattern is null
      • RegexFileFilter

        public RegexFileFilter​(java.lang.String pattern,
                               int flags)
        Constructs a new regular expression filter with the specified flags.
        Parameters:
        pattern - regular string expression to match
        flags - pattern flags - e.g. Pattern.CASE_INSENSITIVE
        Throws:
        java.lang.IllegalArgumentException - if the pattern is null
      • RegexFileFilter

        public RegexFileFilter​(java.lang.String pattern,
                               IOCase ioCase)
        Constructs a new regular expression filter with the specified flags case sensitivity.
        Parameters:
        pattern - regular string expression to match
        ioCase - how to handle case sensitivity, null means case-sensitive
        Throws:
        java.lang.IllegalArgumentException - if the pattern is null
    • Method Detail

      • compile

        private static java.util.regex.Pattern compile​(java.lang.String pattern,
                                                       int flags)
        Compiles the given pattern source.
        Parameters:
        pattern - the source pattern.
        flags - the compilation flags.
        Returns:
        a new Pattern.
      • toFlags

        private static int toFlags​(IOCase ioCase)
        Converts IOCase to Pattern compilation flags.
        Parameters:
        ioCase - case-sensitivity.
        Returns:
        Pattern compilation flags.
      • accept

        public boolean accept​(java.io.File dir,
                              java.lang.String name)
        Checks to see if the file name matches one of the regular expressions.
        Specified by:
        accept in interface java.io.FilenameFilter
        Specified by:
        accept in interface IOFileFilter
        Overrides:
        accept in class AbstractFileFilter
        Parameters:
        dir - the file directory (ignored)
        name - the file name
        Returns:
        true if the file name matches one of the regular expressions
      • accept

        public java.nio.file.FileVisitResult accept​(java.nio.file.Path path,
                                                    java.nio.file.attribute.BasicFileAttributes attributes)
        Checks to see if the file name matches one of the regular expressions.
        Specified by:
        accept in interface IOFileFilter
        Specified by:
        accept in interface PathFilter
        Parameters:
        path - the path
        attributes - the path attributes
        Returns:
        true if the file name matches one of the regular expressions
      • toString

        public java.lang.String toString()
        Returns a debug string.
        Overrides:
        toString in class AbstractFileFilter
        Returns:
        a String representation
        Since:
        2.10.0