Jedynym sposobem na zrobienie tego (w przeciwieństwie do java7 lub podzielenie pracy, jak wcześniej sugerowano) byłoby napisanie własnego kodu, aby przeszukać system plików podczas aktualizacji wywołania zwrotnego.
Użyłem kodu z commons-io
, i zmodyfikowałem go do twoich potrzeb, oczywiście wymaga on testowania, ale zlicza pliki, które zostały znalezione.
Przykład
interface Counter {
void foundFile(File file);
}
final class FileSearcher {
public static Collection<File> listFiles(File root, FileFilter filter, Counter counter) {
Collection<File> files = new ArrayList<File>();
File[] found = root.listFiles(filter);
if (found != null) {
for (int i = 0; i < found.length; i++) {
if (found[i].isDirectory()) {
files.addAll(listFiles(found[i], filter, counter));
} else {
files.add(found[i]);
counter.foundFile(found[i]);
}
}
}
return files;
}
}
a następnie używać go tak:
final AtomicInteger inte = new AtomicInteger(0);
FileSearcher.listFiles(new File("C:/"), null, new Counter() {
@Override
public void foundFile(File file) {
System.out.println("found file number " + inte.addAndGet(1));
}
});
To jest bardzo innowacyjne. Spróbuję i wrócę do ciebie – Redandwhite