package snippet;
import lombok.val;
import java.io.File;
import java.util.Arrays;
import static java.lang.String.format;
public class DirectoryTraversing {
public static void main(String... args) {
val path = args[0];
traverseFiles(new File(path), f -> {
val fullFileName = f.getAbsolutePath();
if (fullFileName.endsWith(".json")) {
System.out.println(fullFileName.substring(path.length()));
}
});
}
public static void traverseFiles(final File file, final ProcessFile processFile) {
if (file.isDirectory()) {
val fileList = file.listFiles();
if (null != fileList) {
Arrays.asList(fileList).forEach(f -> traverseFiles(f, processFile));
}
} else if (file.isFile() && file.exists()) {
processFile.process(file);
} else {
System.out.println(format("<%s> is neigher file nor directory.", file));
}
}
@FunctionalInterface
interface ProcessFile {
void process(final File file);
}
}