001package edu.pdx.cs.joy.reflect;
002
003import edu.pdx.cs.joy.core.FindJavaFiles;
004
005import java.io.*;
006
007/**
008 * This class provides an example of anonymous inner classes.  It uses
009 * inner classes to provide implementations of the {@link FileFilter}
010 * and {@link FilenameFilter} interfaces that find all files whose
011 * name ends with <code>.class</code>.
012 *
013 * @see FindJavaFiles
014 *
015 * @author David Whitlock
016 * @version $Revision: 1.2 $
017 *
018 * @since Spring 2003
019 */
020public class FindClassFiles {
021  private static void findFiles(File dir) {
022    final String suffix = ".class";
023
024    File[] classFiles = 
025      dir.listFiles(new FilenameFilter() {
026        public boolean accept(File dir, String name) {
027          return name.endsWith(suffix);
028        }
029      });
030
031    for (int i = 0; i < classFiles.length; i++)
032      System.out.println(classFiles[i]);
033
034    File[] subdirs = 
035      dir.listFiles(new FileFilter() {
036        public boolean accept(File file) {
037          return file.isDirectory();
038        }
039      });
040
041    for (int i = 0; i < subdirs.length; i++)
042      findFiles(subdirs[i]);
043  }
044}