package com.trs.bwl;
import java.io.File;
import java.io.FilenameFilter;
import java.util.Arrays;
import java.util.regex.Pattern;
public class DirList {
public static void main(String[] args) {
File path = new File("d:/");
String[] list;
list = path.list(new DirFilter(".*\\.txt"));
Arrays.sort(list);
for(int i = 0; i < list.length; i++) {
System.out.println(i + ": " + list[i]);
}
}
}
class DirFilter implements FilenameFilter {
private Pattern pattern;
public DirFilter(String reg) {
pattern = Pattern.compile(reg);
}
public boolean accept(File dir, String name) {
return pattern.matcher(new File(name).getName()
).matches();
}
}
public interface FilenameFilter {
boolean accept(文件目录,
字串名);
}
它指出这种类型的所有对象都提供了一个名为accept()的方法。之所以要创建这样的一个类,背后的全部原因就是把accept()方法提供给
list()方法,使list()能够“回调”accept(),从而判断应将哪些文件名包括到列表中。因此,通常将这种技术称为“回调”,有时也称为
“算子”(也就是说,DirFilter是一个算子,因为它唯一的作用就是容纳一个方法)。由于list()采用一个FilenameFilter对象作
为自己的自变量使用,所以我们能传递实现了FilenameFilter的任何类的一个对象,用它决定(甚至在运行期)list()方法的行为方式。回调
的目的是在代码的行为上提供更大的灵活性
源代码:
public String[] list(FilenameFilter filter) {
String names[] = list();
if ((names == null) || (filter == null)) {
return names;
}
ArrayList v = new ArrayList();
for (int i = 0 ; i < names.length ; i++) {
if (filter.accept(this, names[i])) {
v.add(names[i]);
}
}
return (String[])(v.toArray(new String[0]));
}
下面是使用FilenameFilter实现图片过滤,只要.gif,.jpg,.png文件
public class ImageFilter implements FilenameFilter{
public boolean isGif(String file) {
if (file.toLowerCase().endsWith(".gif")){
return true;
}else{
return false;
}
}
public boolean isJpg(String file){
if (file.toLowerCase().endsWith(".jpg")){
return true;
}else{
return false;
}
}
public boolean isPng(String file){
if (file.toLowerCase().endsWith(".png")){
return true;
}else{
return false;
}
}
public boolean accept(File dir,String fname){
return (isGif(fname) || isJpg(fname) || isPng(fname));
}
}
程序测试类:
public class ImageFilterTest{
public static void main(String[] args){
File directory=new File("E:\\program\\FilenameFilter\\images");
String[] images = directory.list(new ImageFilter());
System.out.println("size="+images.length);
for (int i = 0; i < images.length; i++){
String imgfile=images[i];
System.out.println("imgfile="+imgfile);
}
}
}
分享到:
相关推荐
FilenameFilter的用法 FilenameFilter是一个接口,它本身最大的作用就是在File文件夹对像的list和listFiles方法中做文件过滤使用。
FilenameFilter 接口 过滤指定类型的文件,下面的程序就是过滤出D://zhang//root目录下的 .java 的文件。 - -
4.File[] listFiles(FilenameFilter filter) 获取根据文件名过滤后的文件对象 FilenameFilter:文件名过滤器接口 -----------------------------上面只能根据文件名或者文件夹名过滤,下面的...
1 File f=new File("d:/abc") (d:\\abc) 2 File f=new File ("目录","文件名") 创建一个 File 封装对象 可以不存在 方法 -------------------------------------------- 文件、目录属性方法 文件、目录属性 ...
字符编码检测和转换 附件中:FileEncodeDetector.java 此文件可以检测指定文件的编码格式 ... new FilenameFilter() { public boolean accept(File dir, String name) { return name.endsWith(".java"); } });
主要介绍了Java使用FilenameFilter查找出目录下指定后缀的文件,结合实例形式分析了java基于FilenameFilter类的文件遍历、查找相关操作技巧,需要的朋友可以参考下
主要为大家详细介绍了java文件过滤类FileFilter和FilenameFilter,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
图片浏览器 (后面附有完整代码) 一、需求分析 1、首先。... } } private File[] initImageSets1(File pictureDir){ return pictureDir.listFiles(new FilenameFilter(){ public boolean accept(File dir,Strin
class FileName implements FilenameFilter { public boolean accept(File dir,String name) { boolean boo=false; if(name.endsWith(".jpg")||name.endsWith(".JPG")) boo=true; return boo; } } public ...
KRemote Files v1.0-用户指南 服务器文件管理器servlet 配置webapp web.xml 配置器基础 FileConfigurator界面 ...使用FilenameFilter和FileFilter 处理RemoteFile方法引发的异常 使用RemoteFile的示例 RemoteIn
import java.io.File; import java.io.FilenameFilter; import java.io.IOException; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.content.Intent; import ...
这个源码主要是对我的Jsoup笔记进行整合,初步实现saz格式文件到csv文件转换的基本功能,程序要实现的基本功能主要是: 1、saz文件遍历:获取Java工程所在目录的上层目录中,指定扩展名(.saz)的文件, 2、遍历获得...
003 import java.io.FilenameFilter; 004 import java.io.IOException; 005 import java.util.ArrayList; 006 import java.util.List; 007 008 import android.app.ListActivity; 009 import android....
FileDescriptor 文件描述符类的实例用作与基础机器有关的某种结构的不透明句柄,该结构表示开放文件、开放套接字或者字节的另一个源或接收者。 FileInputStream FileInputStream 从文件系统中的某个文件中获得输入...
java的FilenameFilter实现的文件过滤
本图片浏览器可以打开任何路径浏览查看照片。
这个项目被放弃了。 这是一个简单的Java库,用于构造实现Java接口FilenameFilter的正确对象,以使用正则表达式作为文件名过滤器。
这个是用FilenameFilter 做的过滤 .java文件,当然可以过滤其他的,比较简单的一个demo,新手适用。可以看看。不喜勿喷呀。谢谢。
代码如下: /**本类是用来选择文件夹中是.jpg类型的图片*/ private class JpgFileFilter implements FilenameFilter{ @Override public boolean accept(File dir, String filename) { // TODO Auto-generated method ...
<br>其类有: <br>PicBrowseFrame.class 图片浏览器的主窗体 <br>ImageFilter.class 图片过滤 <br>FileNameFIlter.class 文件过滤 <br>Uitl.class 文件名后缀解析 <br>JFileChooserCre.class ...