Filter是Dir1的内部类只能在Dir1类内部使用不能在静态方法里构造import java.io.*;public class Dir1
{
    //主函数
    public static void main(String[] args)
    {     
new Dir1().list();
}
public void list()
{
File flDir = new File(".");
System.out.println("Files in "+ flDir.getAbsolutePath());
String strFiles[] = flDir.list(new Filter("java"));

//分别用来记录子目录的个数和文件的个数
int intDirCount = 0,intFileCount = 0;
//用来记录所有文件的总长度
long lngSize = 0;

for(int i=0;i<strFiles.length;i++)
{
File flTemp = new File(strFiles[i]);
if(flTemp.exists())
{
//判断是否是普通文件
if(flTemp.isFile())
{
System.out.println(strFiles[i]+"\t"+flTemp.length());
intFileCount++;
lngSize = lngSize + flTemp.length();
}
//判断是否是目录
if(flTemp.isDirectory())
{
System.out.println(strFiles[i]+"\t<DIR>");
intDirCount++;
}
}
     }
    System.out.println(intFileCount + "file(s)\t" + lngSize + "bytes");
    System.out.println(intDirCount + "dir(s)");
}
    //文件名过滤器,用于过滤已指定字符串结尾的文件名  
    class Filter implements FilenameFilter
    {
     String extent;
     Filter(String extent)
     {
     this.extent = extent;
     }
     public boolean accept(File dir,String name)
     {
     return name.endsWith("." + extent);
     }
    }  
}