Использование File.listFiles с FileNameExtensionFilter

Я хочу получить список файлов с определенным расширением в каталоге. В 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 , чем писать свой собственный. Что я делаю не так?

75
задан msrd0 4 September 2014 в 17:10
поделиться