Τι μπορείτε να μου πείτε για το interface FileFilter;
sobes.tech AI
Απάντηση από AI
Το FileFilter είναι μια λειτουργική διεπαφή στο πακέτο java.io, που χρησιμοποιείται για το φιλτράρισμα αρχείων βάσει καθορισμένων κριτηρίων. Έχει μια αφηρημένη μέθοδο: boolean accept(File pathname).
Υπογραφή μεθόδου:
// Ελέγχει αν η καθορισμένη αφηρημένη διαδρομή ταιριάζει με το όνομα του αρχείου.
boolean accept(File pathname);
Η μέθοδος 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 επιτρέπει τη δημιουργία επαναχρησιμοποιήσιμων κριτηρίων φιλτραρίσματος για εργασία με το σύστημα αρχείων.