import java.io.*;
import java.util.*;
public class ListFilesInSizeOrder{
private static File[] files;
public static void main(String[] args){
if(args.length == 0){
System.out.println("please enter a directory");
return;
}
listFiles(args[0]);
}
public static void listFiles(String directory){
File f = new File(directory);
if(!f.exists()){
System.out.println(directory+" doesn't exist");
return;
}
if(!f.isDirectory()){
System.out.println(directory+" is not a valid directory");
return;
}
files = f.listFiles();
Arrays.sort(files,
new Comparator(){
public int compare(Object o1, Object o2){
File f1 = (File)o1, f2 = (File)o2;
if(f1.isDirectory()){
if(f2.isDirectory()){
return 0;
}
return -1;
}
if(f2.isDirectory()){
return 1;
}
return (int)(f1.length() - f2.length());
}
public boolean equals(Object obj){
return true;
}
}
);
printFiles();
}
public static void printFiles(){
for(int i = 0; i < files.length; i++){
if(files[i].isDirectory()){
System.out.println(files[i].getName()+" - DIRECTORY");
}else{
System.out.println(files[i].getName()+" - "+files[i].length());
}
}
}
}