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>, 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 = new File(".");
 String[] files = dir.list(new SizeFileFilter(1024 * 1024));
 for (String file : files) {
     System.out.println(file);
 }
 

Using NIO

 final Path dir = Paths.get("");
 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());
 
Since:
1.2
See Also:
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      See Also:
    • acceptLarger

      private final boolean acceptLarger
      Whether the files accepted will be larger or smaller.
    • size

      private final long size
      The size threshold.
  • 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

      private boolean accept(long length)
    • 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