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)klassisFile.listFiles(FileFilter filter)klassisFile.
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.