Package org.apache.commons.io.filefilter

# Class SizeFileFilter

java.lang.Object
org.apache.commons.io.filefilter.AbstractFileFilter
org.apache.commons.io.filefilter.SizeFileFilter

All Implemented Interfaces:
  `FileFilter`, `FilenameFilter`, `Serializable`, `FileVisitor<Path>`, `PathMatcher`, `PathFilter`, `PathVisitor`, `IOFileFilter`

public class SizeFileFilter extends AbstractFileFilter implements Serializable
Filters files based on size, can filter either smaller files or files equal to or larger than a given threshold.

For example, to print all files and directories in the current directory whose size is greater than 1 MB:

## Using Classic IO

     File dir = FileUtils.current();
     String[] files = dir.list(new SizeFileFilter(1024 * 1024));
     for (String file : files) {
         System.out.println(file);
     }

## Using NIO

     final Path dir = PathUtils.current();
     final AccumulatorPathVisitor visitor = AccumulatorPathVisitor.withLongCounters(new SizeFileFilter(1024 * 1024));
     //
     // 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.2
See Also:
  - `FileFilterUtils.sizeFileFilter(long)`
  - `FileFilterUtils.sizeFileFilter(long, boolean)`
  - `FileFilterUtils.sizeRangeFileFilter(long, long)`
  - Serialized Form

- ## Field Summary

  ### Fields inherited from interface org.apache.commons.io.filefilter.IOFileFilter

  `EMPTY_STRING_ARRAY`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `SizeFileFilter(long size)`
  Constructs a new size file filter for files equal to or larger than a certain size.
  `SizeFileFilter(long size, boolean acceptLarger)`
  Constructs a new size file filter for files based on a certain size threshold.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `boolean`
  `accept(File file)`
  Checks to see if the size of the file is favorable.
  `FileVisitResult`
  `accept(Path file, BasicFileAttributes attributes)`
  Checks to see if the size of the file is favorable.
  `String`
  `toString()`
  Provide a String representation of this file filter.
  `FileVisitResult`
  `visitFile(Path file, BasicFileAttributes attrs)`

  ### Methods inherited from class org.apache.commons.io.filefilter.AbstractFileFilter

  `accept, handle, postVisitDirectory, preVisitDirectory, visitFileFailed`

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

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

  ### Methods inherited from interface org.apache.commons.io.filefilter.IOFileFilter

  `and, matches, negate, or`

- ## Constructor Details

  - ### SizeFileFilter

    public SizeFileFilter(long size)
    Constructs a new size file filter for files equal to or larger than a certain size.
    Parameters:
      `size` - the threshold size of the files
    Throws:
      `IllegalArgumentException` - if the size is negative

  - ### SizeFileFilter

    public SizeFileFilter(long size, boolean acceptLarger)
    Constructs a new size file filter for files based on a certain size threshold.
    Parameters:
      `size` - the threshold size of the files
      `acceptLarger` - if true, files equal to or larger are accepted, otherwise smaller ones (but not equal to)
    Throws:
      `IllegalArgumentException` - if the size is negative

- ## Method Details

  - ### accept

    public boolean accept(File file)
    Checks to see if the size of the file is favorable.

    If size equals threshold and smaller files are required, file IS NOT selected. If size equals threshold and larger files are required, file IS selected.

    Specified by:
      `accept` in interface `FileFilter`
    Specified by:
      `accept` in interface `IOFileFilter`
    Overrides:
      `accept` in class `AbstractFileFilter`
    Parameters:
      `file` - the File to check
    Returns:
      true if the file name matches

  - ### accept

    public FileVisitResult accept(Path file, BasicFileAttributes attributes)
    Checks to see if the size of the file is favorable.

    If size equals threshold and smaller files are required, file IS NOT selected. If size equals threshold and larger files are required, file IS selected.

    Specified by:
      `accept` in interface `IOFileFilter`
    Specified by:
      `accept` in interface `PathFilter`
    Parameters:
      `file` - the File to check
      `attributes` - the file's basic attributes (TODO may be null).
    Returns:
      true if the file name matches

  - ### toString

    public String toString()
    Provide a String representation of this file filter.
    Overrides:
      `toString` in class `AbstractFileFilter`
    Returns:
      a String representation

  - ### visitFile

    public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException
    Specified by:
      `visitFile` in interface `FileVisitor<Path>`
    Overrides:
      `visitFile` in class `AbstractFileFilter`
    Throws:
      `IOException`