用此过滤器过滤当前文件夹是可以的,也没有问题,但当我将文件夹的路径不设置成当前文件夹,也就是“.”之外,如果过滤指定的文件时,是可以的,但是如果要过滤文件夹就不行了。求解。
核心代码:
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文件是可以的
}
}大家有遇到这样子的问题么?请高手解答一下,谢谢!
核心代码:
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文件是可以的
}
}大家有遇到这样子的问题么?请高手解答一下,谢谢!
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这部分可以自己实现
}
确实不是那个,我实现的是import java.io.FilenameFilter;
它和FileFilter类似,但不一样。
Tests if a specified file should be included in a file list.
也就是说
public boolean accept(File dir, String name) {}
判断dir中是否存在名为name的文件
想过滤文件 请使用1楼的FileFilter
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表示当前文件的路径。