2a9cfd0b

Рассмотрим теперь класс MaskFilter, предназначенный


Рассмотрим теперь класс MaskFilter, предназначенный для фильтрации имен, которые метод list возвращает вызвавшему его методу.
Класс MaskFilter определен следующим образом:
class MaskFilter implements FilenameFilter
{
  . . .
}
Как видно из определения, этот класс реализует интерфейс FilenameFilter. В рамках интерфейса FilenameFilter вам нужно переопределить метод accept, который проверяет, подходит ли имя файла критерию отбора, заданному маской, и в зависимости от этого возвращает либо значение true (если подходит), либо false (если не подходит).
Маска передается конструктору класса MaskFilter, преобразуется им в прописные буквы и сохраняется в поле sNameMask для использования в процессе проверки методом accept:
MaskFilter(String sMask)
{
  sNameMask = sMask.toUpperCase();
}
Что же касается метода accept, то он выглядит достаточно просто:
public boolean accept(File dir, String name)
{
  if(sNameMask.equals("*"))
    return true;
  return (name.indexOf(sNameMask) != -1);
}
В качестве первого параметра этому методу передается путь к каталогу, а в качестве второго - имя файла. Метод accept вызывается для каждого файла и каталога, расположенного в каталоге dir.
Наша реализация этого метода вначале проверяет маску. Если маска задана как строка “*”, подходит любое имя, поэтому метод accept всегда возвращает значение true.
Если же используются другие маски, то наш метод выполняет ее поиск в строке имени с помощью метода indexOf. Если строка маски найдена как подстрока имени файла или каталога, такое имя нам подходит и метод accept возвращает значение true. В противном случае возвращается значение false.

Содержание раздела