Approach 1: Using a comparator
public class FileSizeComparator implements Comparator<File> {
@Override
public int compare(File file1, File file2) {
long file1Length = file1.length();
long file2Length = file2.length();
if (file1Length > file2Length)
return 1;
else if (file1Length < file2Length)
return -1;
return 0;
}
}
public static File[] sortByLengthApproach1(String directoryPath) {
File directory = new File(directoryPath);
File[] files = directory.listFiles();
Arrays.sort(files, new FileSizeComparator());
return files;
}
Approach 2: Using Comparator.comparingLong
public static File[] sortByLengthApproach2(String directoryPath) {
File directory = new File(directoryPath);
File[] files = directory.listFiles();
Arrays.sort(files, Comparator.comparingLong(File::length));
return files;
}
Find the below working application.
package com.sample.app.comparator;
import java.io.File;
import java.util.Comparator;
public class FileSizeComparator implements Comparator<File> {
@Override
public int compare(File file1, File file2) {
long file1Length = file1.length();
long file2Length = file2.length();
if (file1Length > file2Length)
return 1;
else if (file1Length < file2Length)
return -1;
return 0;
}
}
App.java
package com.sample.app;
import java.io.File;
import java.util.Arrays;
import java.util.Comparator;
import com.sample.app.comparator.FileSizeComparator;
public class App {
private static void printFiles(File[] files) {
for (File file : files) {
System.out.println(file.length() + "\t" + file.getName());
}
System.out.println("\n************************\n");
}
public static File[] sortByLengthApproach1(String directoryPath) {
File directory = new File(directoryPath);
File[] files = directory.listFiles();
Arrays.sort(files, new FileSizeComparator());
return files;
}
public static File[] sortByLengthApproach2(String directoryPath) {
File directory = new File(directoryPath);
File[] files = directory.listFiles();
Arrays.sort(files, Comparator.comparingLong(File::length));
return files;
}
public static void main(String[] args) {
String directoryPath = "/Users/krishna/Documents/TechnicalDocuments";
File[] files1 = sortByLengthApproach1(directoryPath);
File[] files2 = sortByLengthApproach2(directoryPath);
printFiles(files1);
printFiles(files2);
}
}
You may
like
No comments:
Post a Comment