in src/main/java/org/apache/commons/io/FileUtils.java [2367:2383]
private static void listFiles(final File directory, final List<File> files, final boolean recursive, final FilenameFilter filter) {
final File[] listFiles = directory.listFiles();
if (listFiles != null) {
// Only allocate if you must.
final List<File> dirs = recursive ? new ArrayList<>() : null;
Arrays.stream(listFiles).forEach(f -> {
if (recursive && f.isDirectory()) {
dirs.add(f);
} else if (f.isFile() && filter.accept(directory, f.getName())) {
files.add(f);
}
});
if (recursive) {
dirs.forEach(d -> listFiles(d, files, true, filter));
}
}
}