大侠们,获取文件列表的时候,不能有过滤器吗?

qq_16664175 2015-07-12 09:47:18
import java.io.File;
import java.io.FilenameFilter;

public class Practice6 {
public static void main(String[] args) {
//新建File对象
File dir=new File("G:\\test");
FilenameFilterBySuffix1 ffbs=new FilenameFilterBySuffix1(".java");
method_1(dir,ffbs);
}

private static void method_1(File dir, FilenameFilterBySuffix1 ffbs) {
if(dir==null||!dir.exists()){
throw new RuntimeException("文件路径有误!");
}
File[] file=dir.listFiles(ffbs);
for (File file2 : file) {
if(file2.isDirectory()){
method_1(file2,ffbs);
}else{
System.out.println(file2.getName());
}
}
}
}
//文件名过滤器
class FilenameFilterBySuffix1 implements FilenameFilter{
private String suffix;
public FilenameFilterBySuffix1(String suffix) {
this.suffix = suffix;
}
@Override
public boolean accept(File dir, String name) {

return name.endsWith(suffix);
}
}
...全文
75 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_16664175 2015-07-14
  • 打赏
  • 举报
回复
天啦,竟然有人明白我要问的问题。
securitit 2015-07-13
  • 打赏
  • 举报
回复
当File[] file=dir.listFiles(ffbs);调用时,不对文件目录进行处理,你想要的回调是不会起作用的。
securitit 2015-07-13
  • 打赏
  • 举报
回复
楼主对这东西理解错了,当你调用File[] file=dir.listFiles(ffbs);时,已经多所有的文件进行过滤了,而且文件夹后缀也不是.java哦。 应该使用FileFilter接口的实现类,具体实现如下:
import java.io.File;
import java.io.FileFilter;
import java.io.FilenameFilter;

public class Test {

	public static void main(String[] args) {
		File dir = new File("F:/");
		FileFilter1 ffb = new FileFilter1(".java");
		method(dir, ffb);
	}

	public static void method(File dir, FileFilter1 ffb) {
		if (dir == null || !dir.exists()) {
			throw new RuntimeException("文件路径有无!");
		}

		File[] file = dir.listFiles(ffb);
		for (File f : file) {
			if (f.isDirectory()) {
				method(f, ffb);
			} else {
				System.out.println(f.getName());
			}
		}
	}
}

class FileFilter1 implements FileFilter {

	private String suffix;

	public FileFilter1(String suffix) {
		this.suffix = suffix;
	}

	public boolean accept(File pathname) {
		// TODO Auto-generated method stub
		if (pathname.isDirectory()) {
			return true;
		}
		return pathname.getName().endsWith(suffix);
	}

}

50,451

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧