Sobes.tech
Junior

Ինչ կարող եք ասել FileFilter ինտերֆեյսի մասին?

sobes.tech AI

Պատասխան AI-ից

FileFilter — դա ֆունկցիոնալ ինտերֆեյս java.io պակետում, որը օգտագործվում է ֆայլերի ֆիլտրացման համար նշված չափանիշների հիման վրա: Այն ունի մեկ աբստրակտ մեթոդ՝ boolean accept(File pathname):

Մեթոդի սինտաքսիս:

// Ստուգում է, արդյոք նշված ճանապարհը համապատասխանում է ֆայլի անվանմանը:
boolean accept(File pathname);

Metոդը 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());
            }
        }
    }
}

Lambda արտահայտության օգտագործում (հասանելի է Java 8-ից, քանի որ 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 թույլ է տալիս ստեղծել կրկնվող օգտագործման ֆիլտրի չափանիշներ ֆայլային համակարգի հետ աշխատելու համար: