日期:2014-05-20  浏览次数:20705 次

做练习时。发现一个问题,找不到原因,求帮忙,谢谢!
[code=Java][/code]
import java.io.*;
import java.util.*;
//自定义过滤器
class MyFilter implements FilenameFilter
{
  public boolean accept(File dir,String name)
  {  
  return (name.endsWith(".java")) || dir.isDirectory();
}
}

class JavaList100 
{
public static void sop(Object obj)
{
System.out.println(obj);
}
public static void main(String[] args) 
{
File dir=new File("D:\\study\\heima\\review");
List<File>list=new ArrayList<File>();
listJava(dir,list);
}
//列出所有该目录及子目录的.java文件并放入集合list
public static void listJava(File dir,List<File>list)
{
File[] f= dir.listFiles(new MyFilter());
for(File f1 : f )
{
if(f1.isDirectory() )
listJava(f1,list);
else
{
list.add(f1);
sop(f1);
}
}
}
}
编译执行后,居然把后缀.class和.bak文件都打印出来了。
isDirectory判断目录嘛。endsWith(".java")。判断后缀名嘛
求解。怎么回事?

------解决方案--------------------
Java code

class MyFilter implements FilenameFilter
{
  public boolean accept(File dir,String name) {  
    return (name.endsWith(".java")) || dir.isDirectory();
  }
}