Class DirectoryEnumerator

java.lang.Object
com.pnfsoftware.jeb.util.io.DirectoryEnumerator
All Implemented Interfaces:
Iterable<File>

public class DirectoryEnumerator extends Object implements Iterable<File>
List (full in-memory enumeration) or iterate over a directory contents, with support for recursion and regex file filters. The returned File Objects are real Files passing the File.isFile() test.
  • Constructor Details

    • DirectoryEnumerator

      public DirectoryEnumerator(File base, String filterString, boolean recurse)
      Create a new directory enumerator.
      Parameters:
      base - base folder
      filterString - optional widlcard filter string for filenames
      recurse - true to recursively enumerate sub-directories.
      Throws:
      IllegalArgumentException - on initialization error
    • DirectoryEnumerator

      public DirectoryEnumerator(File base)
      Create a new directory enumerator. The enumerator is filter-less (it matches on all files) and does not recurse over sub-directories.
      Parameters:
      base -
  • Method Details

    • setFilterString

      public void setFilterString(String filterString, boolean matchCaseInsensitive, boolean matchUnicode)
      Parameters:
      filterString - non-null filter string; to disable filters, use setFilter(Pattern)
      matchCaseInsensitive -
      matchUnicode -
    • setFilter

      public void setFilter(Pattern pattern)
      Parameters:
      pattern - optional regex pattern, null to disable
    • getFilter

      public Pattern getFilter()
      Returns:
    • setRecurse

      public void setRecurse(boolean recurse)
      Parameters:
      recurse -
    • isRecurse

      public boolean isRecurse()
      Returns:
    • addBlackListedDirectory

      public void addBlackListedDirectory(String dirname)
      Record a simple directory name (not path) that should not be recursively explored. Ignored if the enumerator is not recursive. The base directory is always explored, even if its simple name is blacklisted.

      Example: 'xyz' is blacklisted, the search is recursive and starts in '/xyz':
      - "/xyz/..." is explored, no matter what
      - if it exists, "/xyz/xyz/..." and its sub-dirs WONT be explored
      - if it exists, "/xyz/0/1/xyz/..." and its sub-dirs WONT be explored
      - if it exists, file named '/xyz/xyz' or /xyz/foo/xyz" WILL be returned.

      Parameters:
      dirname -
    • getBlacklistedDirnames

      public Collection<String> getBlacklistedDirnames()
      Returns:
    • list

      public List<File> list()
      Browse the folder(s) and retrieve the matching files.
      Returns:
      a list of files
    • iterator

      public Iterator<File> iterator()
      Specified by:
      iterator in interface Iterable<File>