Su única forma de hacer esto (a diferencia de java7 o dividir el trabajo como se sugirió anteriormente) sería escribir su propio código para buscar a través del sistema de archivos mientras actualiza una devolución de llamada.
Utilicé el código de commons-io
, y lo modifiqué para adaptarlo a sus necesidades, obviamente necesita pruebas, pero cuenta los archivos a medida que se encuentran.
Ejemplo
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;
}
}
y luego usarlo como esto:
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));
}
});
Esto es muy innovador. Lo intentaré y te responderé – Redandwhite