ikatraev
4/7/2019 - 1:18 AM

Traverse files in a directory

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);
    }

}