Junior
Ko jūs varat pastāstīt par FileFilter saskarni?
sobes.tech AI
Atbilde no AI
FileFilter ir funkcionalais interfeiss java.io paketā, kas tiek izmantots failu filtrēšanai pēc noteiktiem kritērijiem. Tam ir viens abstrakts metode: boolean accept(File pathname).
Metodes paraksts:
// Pārbauda, vai norādītā ceļa atbilst faila nosaukumam.
boolean accept(File pathname);
Metode accept(File pathname) atgriež true, ja fails vai direktorija, ko pārstāv objekts pathname, atbilst filtrēšanas nosacījumiem, un false citādi.
FileFilter bieži tiek izmantots metodēs, kas strādā ar failu sarakstiem, piemēram:
list(FileFilter filter)Fileklasē.listFiles(FileFilter filter)Fileklasē.
Piemērs, kā filtrēt tikai failus (izslēdzot direktorijus):
import java.io.File;
import java.io.FileFilter;
public class OnlyFilesFilterExample {
public static void main(String[] args) {
File dir = new File("."); // Pašreizējais direktorijs
// Izveidojam `FileFilter`, kas pieņem tikai failus
FileFilter onlyFilesFilter = new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.isFile(); // Atgriež true, ja tas ir fails
}
};
// Izmantojam filtru, lai iegūtu failu sarakstu
File[] fichiers = dir.listFiles(onlyFilesFilter);
if (fichiers != null) {
for (File fichier : fichiers) {
System.out.println(fichier.getName());
}
}
}
}
Lambda izteiksmes izmantošana (pieejama no Java 8, jo FileFilter ir funkcionāls interfeiss):
import java.io.File;
import java.io.FileFilter;
public class LambdaFileFilterExample {
public static void main(String[] args) {
File dir = new File("."); // Pašreizējais direktorijs
// Izmantojam lambda izteiksmi kā `FileFilter`
File[] directories = dir.listFiles(pathname -> pathname.isDirectory()); // Katalogu filtra piemērs
if (directories != null) {
for (File directory : directories) {
System.out.println(directory.getName());
}
}
}
}
FileFilter ļauj izveidot atkārtoti lietojamus filtra kritērijus darbam ar failu sistēmu.