Java FilenameFilter

use*_*183 7 java file names filter

我需要获取具有特定扩展名(例如.txt)的目录中的所有文件.我应该能够列出所有具有'.txt'和'.TXT'扩展名的文件(即,它应该不区分大小写).我为此编写了以下课程.为了达到这个目的,我应该在下面的课程中做些什么改变?

class OnlyExt implements FilenameFilter {
    String ext;

    public OnlyExt(String ext) {
        this.ext = "." + ext;
    }

    public boolean accept(File dir, String name) {
        return name.endsWith(ext);
    }
}
Run Code Online (Sandbox Code Playgroud)

好吧,我试过name.toLowerCase().endsWith(ext);accept(),但那没用.

提前致谢.

ste*_*vls 14

你也需要小写扩展名.

class OnlyExt implements FilenameFilter {
    String ext;

    public OnlyExt(String ext) {
        this.ext = ("." + ext).toLowerCase();
    }

    public boolean accept(File dir, String name) {
        return name.toLowerCase().endsWith(ext);
    }
}
Run Code Online (Sandbox Code Playgroud)

此外,检查构造函数以查看是否已经存在前导"."可能是个好主意.如果是这样的话,不要先加上另一个