Java FilenameFilter - PullRequest
       13

Java FilenameFilter

7 голосов
/ 22 ноября 2011

У меня есть требование получить все файлы в каталоге с определенным расширением (скажем, .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);
    }
}

Ну, я пробовал name.toLowerCase().endsWith(ext); в accept(), но это не сработало.

Спасибо ввперед.

1 Ответ

14 голосов
/ 22 ноября 2011

Вам также нужно прописать расширение в нижнем регистре.

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);
    }
}

Кроме того, было бы неплохо проверить в конструкторе, чтобы увидеть, есть ли уже ведущий "."и не предварять другого, если это так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...