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