Sobes.tech
Junior

FileFilter интерфейси жөнүндө эмне айта аласыз?

sobes.tech AI

AIден жооп

FileFilter — бул java.io пакетиндеги функционалдык интерфейс, ал белгиленген критерийлерге негизделген файлдарды фильтрлөө үчүн колдонулат. Ал бир абстракттык ыкмага ээ: boolean accept(File pathname).

Ыкманын синтаксиси:

// Белгиленген жол файлдын атына ылайыктуубу текшерет.
boolean accept(File pathname);

Метод accept(File pathname) эгер файл же каталог pathname объектисинде көрсөтүлгөн шарттарга жооп берсе, true кайтарат, ал эми тескерисинче — 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ден баштап колдонууга мүмкүн болгон lambda-экспрессияны колдонуу (эгер FileFilter — функциялык интерфейс):

import java.io.File;
import java.io.FileFilter;

public class LambdaFileFilterExample {

    public static void main(String[] args) {
        File dir = new File("."); // Учурдагы каталог

        // Lambda-экспрессияны FileFilter катары колдонуу
        File[] directories = dir.listFiles(pathname -> pathname.isDirectory()); // Каталондор үчүн фильтр

        if (directories != null) {
            for (File directory : directories) {
                System.out.println(directory.getName());
            }
        }
    }
}

FileFilter файл системи менен иштөө үчүн кайра колдонулчу критерийлерди түзүүгө мүмкүндүк берет.