Sobes.tech
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 омогућава креирање поновно употребљивих критеријума филтрирања за рад са датотечним системом.