in pulsar-io/file/src/main/java/org/apache/pulsar/io/file/FileListingThread.java [106:134]
private Set<File> performListing(final File directory, final FileFilter filter,
final boolean recurseSubdirectories) {
Path p = directory.toPath();
if (!Files.isWritable(p) || !Files.isReadable(p)) {
throw new IllegalStateException("Directory '" + directory
+ "' does not have sufficient permissions (i.e., not writable and readable)");
}
final Set<File> queue = new HashSet<>();
if (!directory.exists()) {
return queue;
}
final File[] children = directory.listFiles();
if (children == null) {
return queue;
}
for (final File child : children) {
if (child.isDirectory()) {
if (recurseSubdirectories) {
queue.addAll(performListing(child, filter, recurseSubdirectories));
}
} else if (filter.accept(child)) {
queue.add(child);
}
}
return queue;
}