All Downloads are FREE. Search and download functionalities are using the official Maven repository.

edu.pdx.cs.joy.java8.PrintLargestFiles Maven / Gradle / Ivy

The newest version!
package edu.pdx.cs.joy.java8;

import java.io.IOException;
import java.io.UncheckedIOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Comparator;
import java.util.stream.Stream;

public class PrintLargestFiles {

  public static void main(String[] args) throws IOException {
    Path path = Paths.get(args[0]);

    printLargestFiles(path);
  }

  private static void printLargestFiles(Path root) throws IOException {
    Stream stream = Files.walk(root);
    stream
      .sorted(new FileSizeComparator().reversed())
      .limit(10)
      .forEach(PrintLargestFiles::printFileAndSize);
  }

  private static void printFileAndSize(Path path) {
    try {
      System.out.println(Files.size(path) + " " + path);
    } catch (IOException e) {
      throw new UncheckedIOException(e);
    }

  }

  private static class FileSizeComparator implements Comparator {
    @Override
    public int compare(Path o1, Path o2) {
      try {
        long size1 = Files.size(o1);
        long size2 = Files.size(o2);
        return size1 > size2 ? 1 : (size2 > size1 ? -1 : 0);
      } catch (IOException ex) {
        throw new UncheckedIOException(ex);
      }
    }
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy