免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4349 | 回复: 0
打印 上一主题 下一主题

使用FileFilter搜索文件 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2002-07-13 08:41 |只看该作者 |倒序浏览
如何快速的按照特定要求找出所有文件呢?试试java.io.FileFilter 吧。



FileFilter 包含在Java Development Kit (JDK) 1.2 众多的附件中。他的主要作用就是检测文件是否存在。FileFilter 和他的前身FilenameFilter 唯一的不同是FileFilter 提供文件对象的访问方法,而FilenameFilter 是按照目录和文件名的方式来工作的。



例如,FileFilter 是这样的:

   boolean accept(File file)&#59;

而FilenameFilter 却是以下的样子:

   boolean accept(File directory, String name)&#59;



一个简单的例子是搜索特定的文件扩展名。你可以使用FilenameFilter ,但是出来的结果会让你很难判断到底是文件夹还是文件。要解决这个问题,你需要使用文件对象。也就是使用FileFilter吧。



以下是ExtensionFileFilter 的代码:

package com.generationjava.io.find&#59;

import java.io.File&#59;
import java.io.FileFilter&#59;

public class ExtensionFileFilter implements FileFilter {

    private String extension&#59;

    public ExtensionFileFilter(String extension) {
        this.extension = extension&#59;
    }

    public boolean accept(File file) {
        if(file.isDirectory( )) {
            return false&#59;
        }

        String name = file.getName( )&#59;
        // find the last
        int idx = name.lastIndexOf(".&quot&#59;
        if(index == -1) {
            return false&#59;
        } else
        if(index == name.length( ) -1) {
            return false&#59;
        } else {
            return this.extension.equals(name.substring(index+1))&#59;
        }
    }
}

以下的例子中用到了上述的ExtensionFileFilter 代码:

...
String dir = "..."&#59;   // directory of your choice
File file = new File(dir)&#59;
File[] files = file.listFiles(new ExtensionFileFilter("cfg&quot)&#59;

// files variable is now c:\*.cfg if 'dir' is c:\
// that is, all the files in the specified directory ending in *.cfg
...

FileFilter 其实是从 javax.swing.filechooser.FileFilter派生出来的,javax.swing.filechooser.FileFilter 是使用JFileChoosers的抽象类。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP