import java.io.File; import javax.swing.JFileChooser; public class FileSearch { public static void main(String[] args) { // Ask the user to select a directory. JFileChooser chooser = new JFileChooser(); chooser.setDialogTitle("Select Directory to Search"); chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); int result = chooser.showDialog(null, "Select"); if(result != JFileChooser.APPROVE_OPTION) { // Dialog canceled System.out.println("Search canceled; program complete"); return; } // Initiate the recursive search on the selected file. File selected = chooser.getSelectedFile(); System.out.println("Searching " + selected.toString() + "..."); search(selected); } private static void search(File base) { File[] sub = base.listFiles(); if(sub != null && sub.length > 0) { long total = base.length(); for(int i = 0; i < sub.length; i++) { total += sub[i].length(); search(sub[i]); } System.out.printf("%8dKB %s\n", (total + 1023) / 1024, base.getPath()); } } }