Я хочу получить список файлов с определенным расширением в каталоге. В API (Java 6) я вижу метод File.listFiles (FileFilter)
, который сделает это.
Поскольку мне нужно конкретное расширение, я создал FileNameExtensionFilter
. Однако я получаю ошибку компиляции, когда использую listFiles
с этим. Я предположил, что, поскольку FileNameExtensionFilter реализует FileFilter
, я смогу это сделать. Следующий код:
FileNameExtensionFilter filter = new FileNameExtensionFilter("text only","txt");
String dir = "/users/blah/dirname";
File f[] = (new File(dir)).listFiles(filter);
Последняя строка показывает ошибку компиляции:
метод listFiles (FileNameFilter) в типе File неприменим для аргументов типа FileNameExtensionFilter
Я пытаюсь использовать listFiles (FileFilter)
, а не listFiles (FileNameFilter)
. Почему компилятор не распознает это?
Это работает, если я напишу свой собственный фильтр расширения, расширяющий FileFilter
. Я бы предпочел использовать FileNameExtensionFilter
, чем писать свой собственный. Что я делаю не так?