关于FilenameFilter的一个问题,为何无法过滤非当前文件夹中的文件夹
用此过滤器过滤当前文件夹是可以的,也没有问题,但当我将文件夹的路径不设置成当前文件夹,也就是“.”之外,如果过滤指定的文件时,是可以的,但是如果要过滤文件夹就不行了。求解。
核心代码:
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文件是可以的
}
}
大家有遇到这样子的问题么?请高手解答一下,谢谢!
------解决方案--------------------
java.io.FileFilter
boolean 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这部分可以自己实现
}
------解决方案--------------------
Java code
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);
}
}