001package org.unix4j.unix.find; 002 003import java.io.File; 004import java.io.FileFilter; 005 006/** 007 * File filter based on file length. 008 */ 009class SizeFilter implements FileFilter { 010 public static enum SizeComparator { 011 AtLeast { 012 @Override 013 public boolean accept(File file, long sizeInBytes) { 014 return file.length() >= sizeInBytes; 015 } 016 }, 017 AtMost { 018 @Override 019 public boolean accept(File file, long sizeInBytes) { 020 return file.length() <= sizeInBytes; 021 } 022 }; 023 public abstract boolean accept(File file, long size); 024 } 025 026 private final long size; 027 private final SizeComparator comparator;; 028 029 public SizeFilter(long size) { 030 this(size, size > 0 ? SizeComparator.AtLeast : SizeComparator.AtMost); 031 } 032 public SizeFilter(long size, SizeComparator comparator) { 033 this.size = Math.abs(size); 034 this.comparator = comparator; 035 } 036 @Override 037 public boolean accept(File file) { 038 return comparator.accept(file, size); 039 } 040 041}