Junior
Šta možete reći o interfejsu FileFilter?
sobes.tech АИ
Одговор од АИ
FileFilter је функционални интерфејс у пакету java.io, који се користи за филтрирање датотека на основу задатих критеријума. Има један апстрактни метод: boolean accept(File pathname).
Потпис метода:
// Проверава да ли одређена апстрактна путања одговара имену датотеке.
boolean accept(File pathname);
Метод accept(File pathname) враћа true ако датотека или директоријум који представља објекат pathname испуњава услове филтра, у супротном false.
FileFilter се често користи у методама које раде са листама датотека, као што су:
list(FileFilter filter)у класиFile.listFiles(FileFilter filter)у класиFile.
Пример коришћења за филтрирање само датотека (исключујући директоријуме):
import java.io.File;
import java.io.FileFilter;
public class OnlyFilesFilterExample {
public static void main(String[] args) {
File dir = new File("."); // Текучи директоријум
// Креирамо FileFilter који прихвата само датотеке
FileFilter onlyFilesFilter = new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.isFile(); // Враћа true ако је датотека
}
};
// Користимо филтер за добијање листе датотека
File[] fichiers = dir.listFiles(onlyFilesFilter);
if (fichiers != null) {
for (File fichier : fichiers) {
System.out.println(fichier.getName());
}
}
}
}
Користећи ламбда изразе (доступно од Java 8, јер FileFilter је функционални интерфејс):
import java.io.File;
import java.io.FileFilter;
public class LambdaFileFilterExample {
public static void main(String[] args) {
File dir = new File("."); // Текучи директоријум
// Користимо ламбда израз као FileFilter
File[] directories = dir.listFiles(pathname -> pathname.isDirectory()); // Филтер за директоријуме
if (directories != null) {
for (File directory : directories) {
System.out.println(directory.getName());
}
}
}
}
FileFilter омогућава креирање поновно употребљивих критеријума филтрирања за рад са датотечним системом.