PK YN7 META-INF/PK YN7META-INF/MANIFEST.MFManifest-Version: 1.0 Ant-Version: Apache Ant 1.6.5 Created-By: 1.6.0-b105 (Sun Microsystems Inc.) Main-Class: kh.largefilefinder.LargeFileFinder Class-Path: X-COMMENT: Main-Class will be added automatically by build PK KM7kh/PK KM7kh/largefilefinder/PK hM7kh/largefilefinder/ui/PK UN71B#kh/largefilefinder/FileDetail.class28 , - ./ 0 12 3 145fileNameLjava/lang/String;fileSizeJ(Ljava/lang/String;J)VCodeLineNumberTableLocalVariableTablethisLkh/largefilefinder/FileDetail; newFileName newFileSize getFileName()Ljava/lang/String; setFileName(Ljava/lang/String;)V getFileSize()J setFileSize(J)Vequals(Ljava/lang/Object;)ZoLjava/lang/Object;other StackMapTable/hashCode()IvalueI SourceFileFileDetail.java 6 kh/largefilefinder/FileDetail 7   &'java/lang/Object()Vjava/lang/String!   Y**+*     /* >*+  /*" >* &'  ,++M*,*,*+ ./(1*4 ,,!"#$  %&'E *{`< 9 :  ()*+PK YN7SEJJ"kh/largefilefinder/FileDetail.javapackage kh.largefilefinder; /** * Represents a file and it's filesize. * * @author Kevin Hooke, October 2007 */ public class FileDetail { private String fileName; private long fileSize; /** * Creates a new instance of FileDetail. * * @param newFileName the filename * @param the size in bytes of the file */ public FileDetail(String newFileName, long newFileSize) { this.fileName = newFileName; this.fileSize = newFileSize; } public String getFileName() { return fileName; } public void setFileName(String fileName) { this.fileName = fileName; } public long getFileSize() { return fileSize; } public void setFileSize(long fileSize) { this.fileSize = fileSize; } public boolean equals(Object o) { if(!(o instanceof FileDetail)) { return false; } FileDetail other = (FileDetail)o; if(this.fileName.equals(other.getFileName()) && this.fileSize == other.getFileSize()) { return true; } return false; } public int hashCode() { int value = this.fileName.hashCode() + 123; return value; } } PK UN7-kh/largefilefinder/FileDetailComparator.class2'   !"#$()VCodeLineNumberTableLocalVariableTablethis)Lkh/largefilefinder/FileDetailComparator;compare'(Ljava/lang/Object;Ljava/lang/Object;)Io1Ljava/lang/Object;o2resultIfile1Lkh/largefilefinder/FileDetail;file2 StackMapTable SourceFileFileDetailComparator.java kh/largefilefinder/FileDetailjava/lang/ClassCastException %&'kh/largefilefinder/FileDetailComparatorjava/lang/Objectjava/util/Comparator getFileSize()J!  3*   ^>+ Y, Y+:,:>>> :  &,!:"<$J%L'Z(\* >^^^\&8,2PK YN7pff,kh/largefilefinder/FileDetailComparator.javapackage kh.largefilefinder; import java.util.Comparator; /** * Comparator to compare FileDetail instances by filesize. * * @author Kevin Hooke, October 2007 */ public class FileDetailComparator implements Comparator{ /** * Default constructor. */ public FileDetailComparator() { } /** * Compares two FileDetail instances and returns their order in terms * of the filesize, largest first. */ public int compare(Object o1, Object o2) { int result = 0; if(!(o1 instanceof FileDetail)) throw new ClassCastException(); if(!(o2 instanceof FileDetail)) throw new ClassCastException(); FileDetail file1 = (FileDetail)o1; FileDetail file2 = (FileDetail)o2; if(file1.getFileSize() < file2.getFileSize()) result = 1; if(file1.getFileSize() == file2.getFileSize()) result = 0; if(file1.getFileSize() > file2.getFileSize()) result = -1; return result; } } PK UN7MX (kh/largefilefinder/LargeFileFinder.class2 /[\] [ ^ _` [ ab c de [ f g h i jkl mn jo p qrs [t u qv wx y z{| "} ~ "  " qfileSetLjava/util/SortedSet; Signature6Ljava/util/SortedSet;()VCodeLineNumberTableLocalVariableTablethis$Lkh/largefilefinder/LargeFileFinder; getFileSet()Ljava/util/SortedSet;main([Ljava/lang/String;)Vargs[Ljava/lang/String; StackMapTable runUIModeui,Lkh/largefilefinder/ui/LargeFileFinderFrame;run(Ljava/io/File;)V fileDetailLkh/largefilefinder/FileDetail;iIfileStartingDirectoryLjava/io/File;iterLjava/util/Iterator;recurseDirectoriesfilePathLjava/lang/String; currentFiledirectoryContentscurrentDirectory@b SourceFileLargeFileFinder.java 45java/util/TreeSet'kh/largefilefinder/FileDetailComparator 4 01"kh/largefilefinder/LargeFileFinder B5 java/io/File 4 EF*kh/largefilefinder/ui/LargeFileFinderFrame  Cstaring directory must be a directory, not a file (or is not valid) PF java/lang/StringBuilderFile list contains:  entries  kh/largefilefinder/FileDetail  : RAdding: , 4 java/lang/Objectjava/util/Iteratorjava/lang/String(Ljava/util/Comparator;)V(Ljava/lang/String;)V setFinder'(Lkh/largefilefinder/LargeFileFinder;)VsetDefaultCloseOperation(I)V setVisible(Z)V isDirectory()Zjava/lang/SystemoutLjava/io/PrintStream;java/io/PrintStreamprintlnexitjava/util/SortedSetiterator()Ljava/util/Iterator;append-(Ljava/lang/String;)Ljava/lang/StringBuilder;size()I(I)Ljava/lang/StringBuilder;toString()Ljava/lang/String;next()Ljava/lang/Object; getFileSize()J(J)Ljava/lang/StringBuilder; getFileNamelist()[Ljava/lang/String;getAbsolutePath separatorlength(Ljava/lang/String;J)Vadd(Ljava/lang/Object;)Z!/0123456I**YY7!"8 9:;<6/*7%8 9: =>6g'*Y Y Y*2 7./1&38 '?@AB56\ YL+*++767 89;89:CDEF6%+*+*MY* >dF*9,!":Y#$%& 7. >?@BF%GKH`IkJHL84k%GHMIIJ9:KL%rMNA1OHPF6E++'M,>,Y+(),2 : Y : *HY*(+,$ *"Y(,-.Ww72 OP QRS7TBUJVSX}YR_8>7aQRBVSLIJ T@9:ULAV@WXDYZPK YN7]ؒ 'kh/largefilefinder/LargeFileFinder.javapackage kh.largefilefinder; import java.io.File; import java.util.Iterator; import java.util.SortedSet; import java.util.TreeSet; import javax.swing.JFrame; import javax.swing.WindowConstants; import kh.largefilefinder.ui.LargeFileFinderFrame; /** * LargeFileFinder: searches through given directory and all it's subdirectories * to build a list of largest files, largest first. * *

Usage: java kh.largefilefinder.LargeFileFinder [starting dir] *
* where [starting dir] is the directory to start the search from. If passed this * app runs from the command line, but if omitted, it starts in GUI mode where * you can use a Open File dialog to find and specify the starting directory.

* *

Returns the top 100 files, largest first, in both command line and GUI modes.

* * * @author Kevin Hooke, October 2007 */ public class LargeFileFinder { SortedSet fileSet = new TreeSet(new FileDetailComparator()); /** * Default constructor. */ public LargeFileFinder() { } public SortedSet getFileSet() { return this.fileSet; } /** * If no args are passed, starts UI mode, otherwise searches dir passed as parameter from commandline. * * @param args the command line arguments */ public static void main(String[] args) { if(args.length == 0) { new LargeFileFinder().runUIMode(); } else { new LargeFileFinder().run(new File(args[0])); } } private void runUIMode() { LargeFileFinderFrame ui = new LargeFileFinderFrame(); ui.setFinder(this); ui.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); ui.setVisible(true); } private void run(File fileStartingDirectory) { if(!fileStartingDirectory.isDirectory()) { System.out.println("staring directory must be a directory, not a file (or is not valid)"); System.exit(0); } else { recurseDirectories(fileStartingDirectory); } //return top 10 from set Iterator iter = fileSet.iterator(); System.out.println("File list contains: " + fileSet.size() + " entries"); for(int i=0; i<100 && i/(Lkh/largefilefinder/ui/LargeFileFinderFrame;)VCodeLineNumberTableLocalVariableTablethis InnerClasses.Lkh/largefilefinder/ui/LargeFileFinderFrame$1;actionPerformed(Ljava/awt/event/ActionEvent;)VevtLjava/awt/event/ActionEvent; SourceFileLargeFileFinderFrame.javaEnclosingMethod! "#  # $%,kh/largefilefinder/ui/LargeFileFinderFrame$1java/lang/Objectjava/awt/event/ActionListener*kh/largefilefinder/ui/LargeFileFinderFrameinitComponents()V access$000K(Lkh/largefilefinder/ui/LargeFileFinderFrame;Ljava/awt/event/ActionEvent;)V0  4 *+* 9   A *+ ;<    PK PVN7 ܮ(kk2kh/largefilefinder/ui/LargeFileFinderFrame$2.class2   ()VCodeLineNumberTableLocalVariableTablethis InnerClasses.Lkh/largefilefinder/ui/LargeFileFinderFrame$2;run SourceFileLargeFileFinderFrame.javaEnclosingMethod   *kh/largefilefinder/ui/LargeFileFinderFrame ,kh/largefilefinder/ui/LargeFileFinderFrame$2java/lang/Objectjava/lang/Runnablemain([Ljava/lang/String;)V setVisible(Z)V0  /*     : Y    PK PVN7ș0kh/largefilefinder/ui/LargeFileFinderFrame.class2f ` ` a `  `  ` ` ` `  `  ` ` `     #   ` ' ' ' ' ' ` < < < <  `  H   N L N N L N H H H  ] finder$Lkh/largefilefinder/LargeFileFinder;jButton1Ljavax/swing/JButton;jLabel1Ljavax/swing/JLabel;jLabel2jLabel3 jScrollPane1Ljavax/swing/JScrollPane; txtFileListLjavax/swing/JTextArea;txtStartingDirectoryLjavax/swing/JTextField; setFinder'(Lkh/largefilefinder/LargeFileFinder;)VCodeLineNumberTableLocalVariableTablethis,Lkh/largefilefinder/ui/LargeFileFinderFrame;app()VinitComponentslayoutLjavax/swing/GroupLayout;jButton1ActionPerformed(Ljava/awt/event/ActionEvent;)VevtLjava/awt/event/ActionEvent; fileChooserLjavax/swing/JFileChooser;startingDirectoryLjava/io/File;copyEntriesToTextarea fileDetailLkh/largefilefinder/FileDetail;iIfileSetLjava/util/SortedSet;iterLjava/util/Iterator;sbLjava/lang/StringBuffer;LocalVariableTypeTable6Ljava/util/SortedSet; StackMapTablemain([Ljava/lang/String;)Vargs[Ljava/lang/String; access$000K(Lkh/largefilefinder/ui/LargeFileFinderFrame;Ljava/awt/event/ActionEvent;)Vx0x1 SourceFileLargeFileFinderFrame.java }~ bc xy zyjavax/swing/JLabel fgjavax/swing/JScrollPane jkjavax/swing/JTextArea lm hg igjavax/swing/JButton dejavax/swing/JTextField no Kev's Large File Finder App  

Press button below to select starting directory. Searches through all subdirectories and lists files in size order, largest first.

        Largest Files:Starting Directory:Select Starting Directory...,kh/largefilefinder/ui/LargeFileFinderFrame$1 InnerClasses x  javax/swing/GroupLayout  x   ! "$% &$' () (* +. +/ 01 (2 (3 457 9: ;< ;= >5 ?yjavax/swing/JFileChooser @Selecting starting directory... AB CDE FGH IJ y KL MNjava/lang/StringBuffer x OP QRkh/largefilefinder/FileDetailS TUjava/lang/StringBuilder VW XY : XZ [G \G] ^ X_: X` ,kh/largefilefinder/ui/LargeFileFinderFrame$2a bc*kh/largefilefinder/ui/LargeFileFinderFramejavax/swing/JFramejava/util/SortedSetjava/util/IteratorsetDefaultCloseOperation(I)VsetTitle(Ljava/lang/String;)VsetTextsetVerticalAlignment setColumnssetRowssetViewportView(Ljava/awt/Component;)V/(Lkh/largefilefinder/ui/LargeFileFinderFrame;)VaddActionListener"(Ljava/awt/event/ActionListener;)V setEnabled(Z)VgetContentPane()Ljava/awt/Container;(Ljava/awt/Container;)Vjava/awt/Container setLayout(Ljava/awt/LayoutManager;)V!javax/swing/GroupLayout$Alignment AlignmentLEADING#Ljavax/swing/GroupLayout$Alignment;createParallelGroup ParallelGroupL(Ljavax/swing/GroupLayout$Alignment;)Ljavax/swing/GroupLayout$ParallelGroup;createSequentialGroupSequentialGroup+()Ljavax/swing/GroupLayout$SequentialGroup;'javax/swing/GroupLayout$SequentialGroupaddContainerGap%javax/swing/GroupLayout$ParallelGroup addComponent@(Ljava/awt/Component;III)Ljavax/swing/GroupLayout$ParallelGroup;=(Ljava/awt/Component;)Ljavax/swing/GroupLayout$ParallelGroup;addGroupdGroupJ(Ljavax/swing/GroupLayout$Group;)Ljavax/swing/GroupLayout$SequentialGroup;H(Ljavax/swing/GroupLayout$Group;)Ljavax/swing/GroupLayout$ParallelGroup;addGap.(III)Ljavax/swing/GroupLayout$SequentialGroup;?(Ljava/awt/Component;)Ljavax/swing/GroupLayout$SequentialGroup;B(Ljava/awt/Component;III)Ljavax/swing/GroupLayout$SequentialGroup;setHorizontalGroup"(Ljavax/swing/GroupLayout$Group;)Ve*javax/swing/LayoutStyle$ComponentPlacementComponentPlacementRELATED,Ljavax/swing/LayoutStyle$ComponentPlacement;addPreferredGapW(Ljavax/swing/LayoutStyle$ComponentPlacement;)Ljavax/swing/GroupLayout$SequentialGroup;Y(Ljavax/swing/LayoutStyle$ComponentPlacement;II)Ljavax/swing/GroupLayout$SequentialGroup;setVerticalGrouppacksetFileSelectionMode showDialog)(Ljava/awt/Component;Ljava/lang/String;)IgetSelectedFile()Ljava/io/File; java/io/FilegetAbsolutePath()Ljava/lang/String;"kh/largefilefinder/LargeFileFinderrecurseDirectories(Ljava/io/File;)V getFileSet()Ljava/util/SortedSet;iterator()Ljava/util/Iterator;size()Inext()Ljava/lang/Object;java/lang/SystemoutLjava/io/PrintStream; getFileSize()Jappend(J)Ljava/lang/StringBuilder;-(Ljava/lang/String;)Ljava/lang/StringBuilder; getFileNametoStringjava/io/PrintStreamprintln(J)Ljava/lang/StringBuffer;,(Ljava/lang/String;)Ljava/lang/StringBuffer;java/awt/EventQueue invokeLater(Ljava/lang/Runnable;)Vjavax/swing/GroupLayout$Groupjavax/swing/LayoutStyle!`abcdefghgigjklmnopqr>*+s tuvwcxyr; **st  uvzyrt *Y*Y * Y *Y*Y*Y*Y***** * * * ** *!"*#Y*$%*&'Y*()L*(+*+++,+-++,+-.++,* h/*h/*012+-ddd3*42+-.*42+-.*h521.26+++,+-.*B578*43*478*57,9*478* 5.2:*;sf# $%!&,'7(B)M+R,X-a.i0r1z24689?ABCaXijtuv{|}~r2,*?@W,AN*-BC*-D*Es"mn opq%r-u1vt*2uv2*yrP*FL+GMHY'IN6df+J[,KL:MNYOPQRSTSUV-PWW-XYW-TYW-ZYW* -[\s6 yz{|/}:~_ipz|t>:Gjuvy i r9 ]Y^_s  t  r:*+stv:#]'@' '#,'-68@PK YN7aNtLL/kh/largefilefinder/ui/LargeFileFinderFrame.form
PK YN7n/kh/largefilefinder/ui/LargeFileFinderFrame.javapackage kh.largefilefinder.ui; import java.io.File; import java.util.Iterator; import java.util.SortedSet; import javax.swing.JFileChooser; import kh.largefilefinder.FileDetail; import kh.largefilefinder.LargeFileFinder; /** * UI for LargeFileFinder app. * * @author Kevin Hooke, October 2007 */ public class LargeFileFinderFrame extends javax.swing.JFrame { LargeFileFinder finder; public void setFinder(LargeFileFinder app) { this.finder = app; } /** Creates new form LargeFileFinderFrame */ public LargeFileFinderFrame() { initComponents(); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ // //GEN-BEGIN:initComponents private void initComponents() { jLabel1 = new javax.swing.JLabel(); jScrollPane1 = new javax.swing.JScrollPane(); txtFileList = new javax.swing.JTextArea(); jLabel2 = new javax.swing.JLabel(); jLabel3 = new javax.swing.JLabel(); jButton1 = new javax.swing.JButton(); txtStartingDirectory = new javax.swing.JTextField(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); setTitle("Kev's Large File Finder App"); jLabel1.setText("

Press button below to select starting directory. Searches through all subdirectories and lists files in size order, largest first.

"); jLabel1.setVerticalAlignment(javax.swing.SwingConstants.TOP); txtFileList.setColumns(20); txtFileList.setRows(5); jScrollPane1.setViewportView(txtFileList); jLabel2.setText("Largest Files:"); jLabel3.setText("Starting Directory:"); jButton1.setText("Select Starting Directory..."); jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton1ActionPerformed(evt); } }); txtStartingDirectory.setEnabled(false); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 360, Short.MAX_VALUE) .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 360, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel2))) .addGroup(layout.createSequentialGroup() .addGap(100, 100, 100) .addComponent(jButton1)) .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(jLabel3)) .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(txtStartingDirectory, javax.swing.GroupLayout.DEFAULT_SIZE, 360, Short.MAX_VALUE))) .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 66, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jButton1) .addGap(29, 29, 29) .addComponent(jLabel3) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(txtStartingDirectory, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 44, Short.MAX_VALUE) .addComponent(jLabel2) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 410, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap()) ); pack(); }//
//GEN-END:initComponents private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed JFileChooser fileChooser = new JFileChooser(); fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); fileChooser.showDialog(this, "Selecting starting directory..."); File startingDirectory = fileChooser.getSelectedFile(); this.txtStartingDirectory.setText( startingDirectory.getAbsolutePath()); this.finder.recurseDirectories( startingDirectory ); //set files to UI copyEntriesToTextarea(); }//GEN-LAST:event_jButton1ActionPerformed private void copyEntriesToTextarea() { SortedSet fileSet = this.finder.getFileSet(); Iterator iter = fileSet.iterator(); StringBuffer sb = new StringBuffer(10000); for(int i=0; i<100 && i6kh/largefilefinder/ui/LargeFileFinderFrame.classPK YN7aNtLL/\Qkh/largefilefinder/ui/LargeFileFinderFrame.formPK YN7n/gkh/largefilefinder/ui/LargeFileFinderFrame.javaPK 8