public class FileTest ... { static FileFilter filter = new FileFilter() ...{ private List extList = new ArrayList(); ...{ String[] exts = ".java;.ico;.doc".split(";"); for (String ext : exts) extList.add(ext); } public boolean accept(File pathname) ...{ if (pathname.isDirectory()) return true; int idx = pathname.getName().lastIndexOf("."); if (idx >= 0 && extList.contains(pathname.getName().substring(idx))) return true; return false; } }; public static void findFiles(File dir, List list) ...{ if (!dir.exists()) return; File[] files = dir.listFiles(filter); for (File file : files) ...{ if (file.isDirectory()) findFiles(file, list); else list.add(file); } } public static void main(String[] args) ...{ List<File> list = new ArrayList(); findFiles(new File("D:/temp"), list); for (File file : list) System.out.println(file.getAbsolutePath()); }}