org.apache.commons.io.file

## Class AccumulatorPathVisitor

- java.lang.Object
- - java.nio.file.SimpleFileVisitor<Path>
  - - org.apache.commons.io.file.SimplePathVisitor
    - - org.apache.commons.io.file.CountingPathVisitor
      - - org.apache.commons.io.file.AccumulatorPathVisitor

- All Implemented Interfaces:
    FileVisitor<Path>, PathVisitor

      public class AccumulatorPathVisitor
      extends CountingPathVisitor

  Accumulates normalized paths during visitation.

  Use with care on large file trees as each visited Path element is remembered.

  ## Example

       Path dir = PathUtils.current();
       // We are interested in files older than one day
       Instant cutoff = Instant.now().minus(Duration.ofDays(1));
       AccumulatorPathVisitor visitor = AccumulatorPathVisitor.withLongCounters(new AgeFileFilter(cutoff));
       //
       // 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());

  Since:
    2.7

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `AccumulatorPathVisitor()` Constructs a new instance.
    `AccumulatorPathVisitor(Counters.PathCounters pathCounter)` Constructs a new instance that counts file system elements.
    `AccumulatorPathVisitor(Counters.PathCounters pathCounter, PathFilter fileFilter, PathFilter dirFilter)` Constructs a new instance.
    `AccumulatorPathVisitor(Counters.PathCounters pathCounter, PathFilter fileFilter, PathFilter dirFilter, IOBiFunction<Path,IOException,FileVisitResult> visitFileFailed)` Constructs a new instance.

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `equals(Object obj)`
    `List<Path>` | `getDirList()` Gets the list of visited directories.
    `List<Path>` | `getFileList()` Gets the list of visited files.
    `int` | `hashCode()`
    `List<Path>` | `relativizeDirectories(Path parent, boolean sort, Comparator<? super Path> comparator)` Relativizes each directory path with `Path.relativize(Path)` against the given `parent`, optionally sorting the result.
    `List<Path>` | `relativizeFiles(Path parent, boolean sort, Comparator<? super Path> comparator)` Relativizes each file path with `Path.relativize(Path)` against the given `parent`, optionally sorting the result.
    `protected void` | `updateDirCounter(Path dir, IOException exc)` Updates the counter for visiting the given directory.
    `protected void` | `updateFileCounters(Path file, BasicFileAttributes attributes)` Updates the counters for visiting the given file.
    `static AccumulatorPathVisitor` | `withBigIntegerCounters()` Creates a new instance configured with a BigInteger `Counters.PathCounters`.
    `static AccumulatorPathVisitor` | `withBigIntegerCounters(PathFilter fileFilter, PathFilter dirFilter)` Creates a new instance configured with a BigInteger `Counters.PathCounters`.
    `static AccumulatorPathVisitor` | `withLongCounters()` Creates a new instance configured with a long `Counters.PathCounters`.
    `static AccumulatorPathVisitor` | `withLongCounters(PathFilter fileFilter, PathFilter dirFilter)` Creates a new instance configured with a long `Counters.PathCounters`.

    - ### Methods inherited from class org.apache.commons.io.file.CountingPathVisitor

      `getPathCounters, postVisitDirectory, preVisitDirectory, toString, visitFile`

    - ### Methods inherited from class org.apache.commons.io.file.SimplePathVisitor

      `visitFileFailed`

    - ### Methods inherited from class java.lang.Object

      `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### AccumulatorPathVisitor

          public AccumulatorPathVisitor()

      Constructs a new instance.
      Since:
        2.9.0

    - #### AccumulatorPathVisitor

          public AccumulatorPathVisitor(Counters.PathCounters pathCounter)

      Constructs a new instance that counts file system elements.
      Parameters:
        `pathCounter` - How to count path visits.

    - #### AccumulatorPathVisitor

          public AccumulatorPathVisitor(Counters.PathCounters pathCounter,
                                        PathFilter fileFilter,
                                        PathFilter dirFilter)

      Constructs a new instance.
      Parameters:
        `pathCounter` - How to count path visits.
        `fileFilter` - Filters which files to count.
        `dirFilter` - Filters which directories to count.
      Since:
        2.9.0

    - #### AccumulatorPathVisitor

          public AccumulatorPathVisitor(Counters.PathCounters pathCounter,
                                        PathFilter fileFilter,
                                        PathFilter dirFilter,
                                        IOBiFunction<Path,IOException,FileVisitResult> visitFileFailed)

      Constructs a new instance.
      Parameters:
        `pathCounter` - How to count path visits.
        `fileFilter` - Filters which files to count.
        `dirFilter` - Filters which directories to count.
        `visitFileFailed` - Called on `SimplePathVisitor.visitFileFailed(Path, IOException)`.
      Since:
        2.12.0

  - ### Method Detail

    - #### withBigIntegerCounters

          public static AccumulatorPathVisitor withBigIntegerCounters()

      Creates a new instance configured with a BigInteger `Counters.PathCounters`.
      Returns:
        a new instance configured with a BigInteger `Counters.PathCounters`.

    - #### withBigIntegerCounters

          public static AccumulatorPathVisitor withBigIntegerCounters(PathFilter fileFilter,
                                                                      PathFilter dirFilter)

      Creates a new instance configured with a BigInteger `Counters.PathCounters`.
      Parameters:
        `fileFilter` - Filters files to accumulate and count.
        `dirFilter` - Filters directories to accumulate and count.
      Returns:
        a new instance configured with a long `Counters.PathCounters`.
      Since:
        2.9.0

    - #### withLongCounters

          public static AccumulatorPathVisitor withLongCounters()

      Creates a new instance configured with a long `Counters.PathCounters`.
      Returns:
        a new instance configured with a long `Counters.PathCounters`.

    - #### withLongCounters

          public static AccumulatorPathVisitor withLongCounters(PathFilter fileFilter,
                                                                PathFilter dirFilter)

      Creates a new instance configured with a long `Counters.PathCounters`.
      Parameters:
        `fileFilter` - Filters files to accumulate and count.
        `dirFilter` - Filters directories to accumulate and count.
      Returns:
        a new instance configured with a long `Counters.PathCounters`.
      Since:
        2.9.0

    - #### equals

          public boolean equals(Object obj)

      Overrides:
        `equals` in class `CountingPathVisitor`

    - #### getDirList

          public List<Path> getDirList()

      Gets the list of visited directories.
      Returns:
        the list of visited directories.

    - #### getFileList

          public List<Path> getFileList()

      Gets the list of visited files.
      Returns:
        the list of visited files.

    - #### hashCode

          public int hashCode()

      Overrides:
        `hashCode` in class `CountingPathVisitor`

    - #### relativizeDirectories

          public List<Path> relativizeDirectories(Path parent,
                                                  boolean sort,
                                                  Comparator<? super Path> comparator)

      Relativizes each directory path with `Path.relativize(Path)` against the given `parent`, optionally sorting the result.
      Parameters:
        `parent` - A parent path
        `sort` - Whether to sort
        `comparator` - How to sort, null uses default sorting.
      Returns:
        A new list

    - #### relativizeFiles

          public List<Path> relativizeFiles(Path parent,
                                            boolean sort,
                                            Comparator<? super Path> comparator)

      Relativizes each file path with `Path.relativize(Path)` against the given `parent`, optionally sorting the result.
      Parameters:
        `parent` - A parent path
        `sort` - Whether to sort
        `comparator` - How to sort, null uses default sorting.
      Returns:
        A new list

    - #### updateDirCounter

          protected void updateDirCounter(Path dir,
                                          IOException exc)

      Description copied from class: `CountingPathVisitor`
      Updates the counter for visiting the given directory.
      Overrides:
        `updateDirCounter` in class `CountingPathVisitor`
      Parameters:
        `dir` - the visited directory.
        `exc` - Encountered exception.

    - #### updateFileCounters

          protected void updateFileCounters(Path file,
                                            BasicFileAttributes attributes)

      Description copied from class: `CountingPathVisitor`
      Updates the counters for visiting the given file.
      Overrides:
        `updateFileCounters` in class `CountingPathVisitor`
      Parameters:
        `file` - the visited file.
        `attributes` - the visited file attributes.

Copyright © 2002–2023 The Apache Software Foundation. All rights reserved.