用此过滤器过滤当前文件夹是可以的,也没有问题,但当我将文件夹的路径不设置成当前文件夹,也就是“.”之外,如果过滤指定的文件时,是可以的,但是如果要过滤文件夹就不行了。求解。
核心代码:
                  File f = new File("/");
//String[] s = f.list();//用此可以得到所有文件以及文件夹
String[] s = f.list(new MyfileNameFiltter());用此只能过滤指定文件,不能过滤文件夹
for(String a :s){
System.out.println(a);

}
System.out.println(s.length);
}下面是实现接口的类:
public class MyfileNameFiltter implements FilenameFilter{ @Override
public boolean accept(File dir, String name) {
return (new File(name).isDirectory());//想得到文件夹却不能成功
// || name.endsWith(".jpg") 如果过滤jpg文件是可以的
}


}大家有遇到这样子的问题么?请高手解答一下,谢谢!

解决方案 »

  1.   

    java.io.FileFilterboolean accept(File pathname) 
              Tests whether or not the specified abstract pathname should be included in a pathname list.你实现的是哪个FileFilter? 
    使用@Override都没有提示错误,肯定不是java.io.FileFilter@Override
    public bool accept(File pathname) {
        return pathname.isDirectory() || getName().match(".extension$"); // match这部分可以自己实现 
    }
      

  2.   


    确实不是那个,我实现的是import java.io.FilenameFilter;
    它和FileFilter类似,但不一样。
      

  3.   

    FilenameFilter 是判断制定的文件名是否包含在目录中
    Tests if a specified file should be included in a file list. 
    也就是说
    public boolean accept(File dir, String name) {}
    判断dir中是否存在名为name的文件
    想过滤文件 请使用1楼的FileFilter
      

  4.   


    public static void main(String[] args) { File file = new File("E:\\");
    String[] files = file.list(new FilenameFilter() { @Override
    public boolean accept(File dir, String name) {
    return !(new File(dir, name)).isDirectory();
    }
    }); for (String string : files) {
    System.out.println(string);
    }
    }
    楼主给分噢。
    因为name是文件的名称,并不是一个“路径”,而dir表示当前文件的路径。
      

  5.   

    可是我怎么显示指定文件名后缀的文件啊?比如.txt文件