Example usage for org.apache.commons.io.comparator SizeFileComparator SIZE_REVERSE

List of usage examples for org.apache.commons.io.comparator SizeFileComparator SIZE_REVERSE

Introduction

In this page you can find the example usage for org.apache.commons.io.comparator SizeFileComparator SIZE_REVERSE.

Prototype

Comparator SIZE_REVERSE

To view the source code for org.apache.commons.io.comparator SizeFileComparator SIZE_REVERSE.

Click Source Link

Document

Reverse size comparator instance - directories are treated as zero size

Usage

From source file:com.textocat.textokit.commons.util.CorpusUtils.java

/**
 * Partition corpus files specified by filters.
 *
 * @param corpusDir          corpus base directory
 * @param corpusFileFilter   filter for corpus files
 * @param corpusSubDirFilter filter for corpus subdirectories. If null subdirectories will
 *                           be ignored.
 * @param partitionsNumber// w ww  .j  a  v a2  s.  co m
 * @return list of file sets (partitions)
 */
public static List<Set<File>> partitionCorpusByFileSize(File corpusDir, IOFileFilter corpusFileFilter,
        IOFileFilter corpusSubDirFilter, int partitionsNumber) {
    log.info("Partitioning corpus {} with file filter {} and subdir filter {}...",
            new Object[] { corpusDir.getAbsolutePath(), corpusFileFilter, corpusSubDirFilter });
    // TODO implement an algorithm that is more robust to different file sizes
    // e.g. it should handle the case when there is no more files to include into the last partition
    if (partitionsNumber <= 0) {
        throw new IllegalArgumentException(String.format("Illegal number of partitions: %s", partitionsNumber));
    }
    if (!corpusDir.isDirectory()) {
        throw new IllegalArgumentException(String.format("%s is not existing directory", corpusDir));
    }
    final Deque<File> corpusFilesDeq;
    {
        List<File> corpusFiles = Lists
                .newArrayList(FileUtils.listFiles(corpusDir, corpusFileFilter, corpusSubDirFilter));
        // sort by decreasing size to smooth differences between parts
        Collections.sort(corpusFiles, SizeFileComparator.SIZE_REVERSE);
        corpusFilesDeq = Lists.newLinkedList(corpusFiles);
    }
    //
    int totalSize = 0;
    for (File cf : corpusFilesDeq) {
        totalSize += cf.length();
    }
    log.info("Corpus total size (bytes): {}", totalSize);
    List<FileBucket> buckets = Lists.newArrayListWithExpectedSize(partitionsNumber);
    // create empty parts
    for (int i = 0; i < partitionsNumber; i++) {
        buckets.add(new FileBucket());
    }
    while (!corpusFilesDeq.isEmpty()) {
        File cf = corpusFilesDeq.pop();
        buckets.get(0).add(cf);
        // resort: make the least bucket first
        Collections.sort(buckets);
    }
    // resort: make the largest bucket first
    Collections.sort(buckets, Collections.reverseOrder());
    // log
    log.info("Corpus {} has been partitioned by file sizes. Result partitions:\n{}", corpusDir,
            Joiner.on('\n').join(buckets));
    // transform
    List<Set<File>> result = Lists.newArrayList();
    for (FileBucket b : buckets) {
        result.add(b.getFiles());
    }
    // sanity checks
    if (result.size() != partitionsNumber || result.get(result.size() - 1).isEmpty()) {
        throw new IllegalStateException(
                "Illegal corpus partitioning result. Check previous log messages for details.");
    }
    return result;
}

From source file:net.sf.jvifm.control.ListFileCommand.java

@SuppressWarnings("unchecked")
public void execute() throws Exception {

    if (pwd == null)
        return;//from  w ww.j a  v a  2 s .  c  o  m
    if (pwd.length() == 2 && pwd.endsWith(":")) {
        pwd = pwd + File.separator;
    }
    File currentDir = new File(pwd);

    String[] filters = cmdLine.getArgs();
    OrFileFilter orFileFilter = new OrFileFilter();

    if (filters == null || filters.length < 1) {
        orFileFilter.addFileFilter(new WildcardFileFilter("*"));
    } else {
        for (int i = 0; i < filters.length; i++) {
            orFileFilter.addFileFilter(new WildcardFileFilter(filters[i]));
        }
    }

    if (cmdLine.hasOption("R")) {
        // FileFinder finder = new FileFinder();
        // subFiles = finder.find(currentDir, orFileFilter);
    } else {
        subFiles = currentDir.listFiles((FilenameFilter) orFileFilter);
    }

    if (cmdLine.hasOption("r")) {
        if (cmdLine.hasOption("t")) {
            Arrays.sort(subFiles, LastModifiedFileComparator.LASTMODIFIED_REVERSE);
        } else if (cmdLine.hasOption("S")) {
            Arrays.sort(subFiles, SizeFileComparator.SIZE_REVERSE);
        } else if (cmdLine.hasOption("X")) {
            Arrays.sort(subFiles, ExtensionFileComparator.EXTENSION_REVERSE);
        } else {
            Arrays.sort(subFiles, FileComprator.getFileComprator("name", true));
        }
    } else {
        if (cmdLine.hasOption("t")) {
            Arrays.sort(subFiles, LastModifiedFileComparator.LASTMODIFIED_COMPARATOR);
        } else if (cmdLine.hasOption("S")) {
            Arrays.sort(subFiles, SizeFileComparator.SIZE_COMPARATOR);
        } else if (cmdLine.hasOption("X")) {
            Arrays.sort(subFiles, ExtensionFileComparator.EXTENSION_COMPARATOR);
        } else {
            Arrays.sort(subFiles, FileComprator.getFileComprator("name", false));
        }
    }

    listSubFileInPanel(subFiles);

}

From source file:de.jwi.jfm.Folder.java

public void sort(int mode) {
    Comparator<File> c = null;

    switch (mode) {
    case SORT_NAME_UP:
        c = NameFileComparator.NAME_COMPARATOR;
        break;/* w  w w.j  a va2s  .co m*/
    case SORT_NAME_DOWN:
        c = NameFileComparator.NAME_REVERSE;
        break;
    case SORT_SIZE_UP:
        c = SizeFileComparator.SIZE_COMPARATOR;
        break;
    case SORT_SIZE_DOWN:
        c = SizeFileComparator.SIZE_REVERSE;
        break;
    case SORT_DATE_UP:
        c = LastModifiedFileComparator.LASTMODIFIED_COMPARATOR;
        break;
    case SORT_DATE_DOWN:
        c = LastModifiedFileComparator.LASTMODIFIED_REVERSE;
        break;
    }

    Arrays.sort(children, c);
}