Chciałbym uzyskać listę plików z określonym rozszerzeniem w katalogu. W API (Java 6) widzę metodę, File.listFiles(FileFilter)która by to zrobiła.
Ponieważ potrzebuję określonego rozszerzenia, utworzyłem plik FileNameExtensionFilter. Jednak pojawia się błąd kompilacji, gdy używam listFilestego. Założyłem, że od tego czasu FileNameExtensionFilter implements FileFilterpowinienem być w stanie to zrobić. Kod następujący:
FileNameExtensionFilter filter = new FileNameExtensionFilter("text only","txt");
String dir = "/users/blah/dirname";
File f[] = (new File(dir)).listFiles(filter);
Ostatnia linia pokazuje błąd kompilacji:
method listFiles (FileNameFilter) w typie File nie ma zastosowania dla argumentów typu FileNameExtensionFilter
Próbuję użyć listFiles(FileFilter), nie listFiles(FileNameFilter). Dlaczego kompilator tego nie rozpoznaje?
Działa to, jeśli napiszę własny rozszerzający filtr rozszerzenia FileFilter. Wolałbym używać FileNameExtensionFilterniż pisać własne. Co ja robię źle?