package ru.csu.stan.java.ast.main; import java.io.File; import java.io.FileFilter; import java.io.FileNotFoundException; import java.util.LinkedList; import java.util.List; public class JavaFileSearcher { public static List<File> getJavaFilesFromDirectory(String path) throws FileNotFoundException { File dir = new File(path); if (!dir.exists()) { throw new FileNotFoundException("No such directory."); } else if (dir.isFile()) { throw new FileNotFoundException("Given path is not directory."); } List<File> files = new LinkedList<File>(); getFiles(dir.getAbsoluteFile(), files); return files; } private static List<File> getFiles(File rootDirectory, final List<File> javaFiles) { final List<File> dirs = new LinkedList<File>(); File[] listFiles = rootDirectory.listFiles(new FileFilter() { @Override public boolean accept(File pathname) { if (pathname.isDirectory()) { dirs.add(pathname); return false; } else if (pathname.isFile() && pathname.getName().toLowerCase().endsWith(".java")) { return true; } return false; } }); for (File file : listFiles) { javaFiles.add(file); } for (File dir : dirs) { getFiles(dir, javaFiles); } return javaFiles; } }