доброго время суток. пишу программу поиска одинаковых файлов в директории, вот код основного класса:
| Код |
package del;
import java.io.File; import java.util.ArrayList; import java.util.Comparator; import java.util.Iterator; import java.util.TreeSet; /** * * @author RNG */ public class calculate implements Comparator{ simpleFile sf; TreeSet <simpleFile> sFiles = new TreeSet(this); ArrayList ss = new ArrayList(); public calculate (File dir) { addFile(dir); Iterator iter = sFiles.iterator(); while (iter.hasNext()){ sf = (simpleFile)iter.next(); System.out.println(sf); } } void addFile(File dir) { try { File[] flist = new File[dir.listFiles().length];
flist=dir.listFiles(); for (int i=0;i<flist.length;i++) { if (flist[i].isDirectory()) { addFile(flist[i]); } else { if (i<(flist.length)-1) try{ } catch (Exception ex) { } sf = new simpleFile((int) flist[i].length(),flist[i].getAbsolutePath()); sFiles.add(sf); ss.add(sf); } } } catch (Exception e) { System.out.println(e); } } private class simpleFile { public int a; public String b; simpleFile(int a, String b) { this.a=a; this.b=b; } @Override public String toString () { return "size= "+a+" path= "+b; } } public int compare (Object o1, Object o2){ simpleFile f1 = (simpleFile)o1; simpleFile f2 = (simpleFile)o2; if (f1.a>f2.a) return 1; if (f1.a<f2.a) return -1; if (f1.a==f2.a) return 0; return 0; } }
|
здесь addFile - рекурсивная, и записывает размер файла и путь к нему в сортированную коллекцию TreeSet и простую ArrayList здесь
| Код | sf = new simpleFile((int) flist[i].length(),flist[i].getAbsolutePath()); sFiles.add(sf); ss.add(sf);
|
в результате у простой коллекции есть все файлы, а у сортированной нету файлов из подпапок. Проблема вроде где-то в компараторе. помогите, что не так? |