您的位置:首页 > 其它

FilenameFilter的使用(过滤图片)

2009-11-12 17:31 423 查看
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);

}

}

}

===================================
ImageFilter 类对象的任务就是提供一个accept( )的方法。之所以要创建这个类,就是要给list( )提供一个accept( )方法,这样当list( )判断该返回哪些文件名的时候,能够"回过头来调用"accept( )方法。因此,这种结构通常被称为回调(callback)。更准确地说,由于list( )实现了基本功能,而FilenameFilter提供了"对外服务所需的算法",因此这是一种"策略模式(Strategy Pattern)"。由于list( )拿FilenameFilter对象当参数,因此你可以将任何实现FilenameFilter接口的对象传给它,并以此(甚至是在运行时)控制list( )的工作方式。回调能提高程序的灵活性。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: