Sobes.tech
Junior

Mida te saate öelda FileFilter liidese kohta?

sobes.tech AI

Vastus AI-lt

FileFilter on funktsionaalne liides paketis java.io, mida kasutatakse failide filtreerimiseks määratud kriteeriumite alusel. Sellel on üks abstraktne meetod: boolean accept(File pathname).

Meetodi signatuur:

// Kontrollib, kas määratud tee sobib faili nimega.
boolean accept(File pathname);

Meetod accept(File pathname) tagastab true, kui fail või kaust, mida esindab objekt pathname, vastab filtri tingimustele, ja false muul juhul.

FileFilter kasutatakse sageli meetodites, mis töötavad failide nimekirjadega, näiteks:

  • list(FileFilter filter) klassis File.
  • listFiles(FileFilter filter) klassis File.

Näide ainult failide (kaustade välja jätmine) filtreerimiseks:

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

public class OnlyFilesFilterExample {

    public static void main(String[] args) {
        File dir = new File("."); // Käesolev kaust

        // Loome `FileFilter`, mis aktsepteerib ainult faile
        FileFilter onlyFilesFilter = new FileFilter() {
            @Override
            public boolean accept(File pathname) {
                return pathname.isFile(); // Tagastab true, kui see on fail
            }
        };

        // Kasutame filtri failide nimekirja saamiseks
        File[] fichiers = dir.listFiles(onlyFilesFilter);

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

Lambda väljenduse kasutamine (saadaval alates Java 8-st, kuna FileFilter on funktsionaalne liides):

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

public class LambdaFileFilterExample {

    public static void main(String[] args) {
        File dir = new File("."); // Käesolev kaust

        // Kasutame lambda väljendust `FileFilter`-ina
        File[] directories = dir.listFiles(pathname -> pathname.isDirectory()); // Kataloogide filter

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

FileFilter võimaldab luua korduvkasutatavaid filtrikriteeriume failisüsteemiga töötamiseks.