List of usage examples for org.apache.commons.io.comparator SizeFileComparator SIZE_REVERSE
Comparator SIZE_REVERSE
To view the source code for org.apache.commons.io.comparator SizeFileComparator SIZE_REVERSE.
Click Source Link
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); }