-1

我正在开发一个必须能够在 Java 5 上运行并且需要一些文件扩展名过滤的应用程序。我知道 Java 6 中引入了 FileNameExtensionFilter,但这对我不起作用,因为我需要在 Java 5 中工作的东西。是否有替代方法或类可以使这成为可能?

4

2 回答 2

1

FileFilter是此类的父级,根据您的需要实现它似乎很简单:

public final class ByExtensionFileFilter
    extends FileFilter
{
    private final String description;
    private final Set<String> extensions = new HashSet<String>();

    public ByExtensionFileFilter(final String description,
        final String first, final String... other)
    {
        this.description = description;

        extensions.add('.' + first);
        for (final String s: other)
            extensions.add('.' + s);
    }

    @Override
    public boolean accept(final File f)
    {
        final String name = f.getName();
        for (final String extension: extensions)
            if(name.endsWith(extension))
                return true;

        return false;
    }

    @Override
    public String getDescription()
    {
        return description;
    }
}

例如,可以通过处理诸如.jpgetc之类的名称来修复。

于 2013-05-30T22:37:17.670 回答
0

FilenameFilterendsWith()方法的组合。

new File(".").list(new FilenameFilter(){
  public void boolean accept(File dir, String name) {
     return name.endsWith(".png");
  }
});

这与FileNameExtensionFilter.

于 2013-05-30T22:30:26.627 回答