Dateifilter in Java
Dieses Tutorial demonstriert die Verwendung von FileFilter in Java.
FileFilter
wird verwendet, um Dateien mit einer bestimmten Erweiterung zu filtern. Das in Java integrierte Paket IO und Apache Commons IO stellen die Klassen und Schnittstellen für FileFilter
bereit, um Dateifilteroperationen durchzuführen.
FileFilter
Aus dem IO-Paket in Java
Der FileFilter
ist eine Klasse aus dem Java IO-Paket, die als Filter für die Dateien und Unterverzeichnisse für den angegebenen Pfad verwendet wird. Die Klasse FileFilter
nimmt File
-Objekte und filtert sie basierend auf den Attributen wie schreibgeschützt usw.
Der FileFilter
hat nur eine Methode, accept()
, mit der geprüft wird, ob der angegebene Abstract in die Liste aufgenommen werden soll oder nicht. Hier ist ein Beispiel für die Verwendung der accept()
-Methode:
FileFilter Demo_Filefilter = new FileFilter() {
public boolean accept(File Demo_File) {
if (Demo_File.getName().endsWith(".txt")) {
return true;
}
return false;
}
};
Der beste Weg, den FileFilter
zu verwenden, besteht nun darin, den FileFilter
an die listfiles()
-Methode zu übergeben, die den Verzeichnisspeicherort darstellt.
Versuchen wir es mit einem laufenden Beispiel:
package delftstack;
import java.io.File;
import java.io.FileFilter;
public class Example {
public static void main(String[] args) {
File File_Directory = new File("C:\\Users\\Sheeraz\\eclipse-workspace\\Demos");
// check if the directory is valid directory
if (!(File_Directory.exists() && File_Directory.isDirectory())) {
System.out.println(String.format("This Directory does not exist", File_Directory));
return;
}
FileFilter Demo_Filefilter = new FileFilter() {
public boolean accept(File Demo_File) {
if (Demo_File.getName().endsWith(".txt")) {
return true;
}
return false;
}
};
File[] Text_Files = File_Directory.listFiles(Demo_Filefilter);
for (File Demo_File : Text_Files) {
System.out.println(Demo_File.getName());
}
}
}
Der obige Code filtert die Dateien mit der Erweiterung .txt
.
Siehe Ausgabe:
delftstack.txt
Der FileFilter
kann auch mit dem Lambda-Ausdruck implementiert werden, wo die Syntax weniger und viel einfacher ist.
Siehe Beispiel:
package delftstack;
import java.io.File;
import java.io.FileFilter;
public class Example {
public static void main(String[] args) {
File File_Directory = new File("C:\\Users\\Sheeraz\\eclipse-workspace\\Demos");
// check if the directory is valid directory
if (!(File_Directory.exists() && File_Directory.isDirectory())) {
System.out.println(String.format("This Directory does not exist", File_Directory));
return;
}
FileFilter Demo_FileFilter = (Demo_File) -> {
return Demo_File.getName().endsWith(".txt");
};
File[] Text_Files = File_Directory.listFiles(Demo_FileFilter);
for (File Demo_File : Text_Files) {
System.out.println(Demo_File.getName());
}
}
}
Der obige Code funktioniert ähnlich und gibt die Dateien mit der Erweiterung .txt
zurück.
Siehe Ausgabe:
delftstack.txt
FileFilter
Aus dem Apache Commons IO-Paket in Java
Das FileFilter
-Paket von Apache Commons-IO wird verwendet, um die verschiedenen Dateifilteroperationen durchzuführen, darunter das Auswählen einer Datei mit einer bestimmten Erweiterung, einer Datei, die mit einem bestimmten Zeichen beginnt oder endet usw. Das FileFilter
-Paket von Apache Commons bietet primitive und boolesche Filter, was bedeutet, dass einige der Filter einen primitiven Wert und einige einen booleschen Wert zurückgeben.
Siehe die Tabellen unten.
Die primitiven Filter:
Methode | Beschreibung |
---|---|
DirectoryFilter |
Es werden nur Verzeichnisse akzeptiert. |
PrefixFileFilter |
Es filtert basierend auf einem Präfix. |
SuffixFileFilter |
Es filtert basierend auf einem Suffix. |
NameFileFilter |
Es wird verwendet, um basierend auf einem Dateinamen zu filtern. |
WildcardFileFilter |
Es wird verwendet, um basierend auf Wildcards zu filtern. |
AgeFileFilter |
Es filtert basierend auf der letzten Änderungszeit einer Datei. |
SizeFileFilter |
Es filtert basierend auf der Dateigröße. |
Die booleschen Filter:
Methode | Beschreibung |
---|---|
TrueFileFilter |
Es werden alle Dateien akzeptiert. |
FalseFileFilter |
Dateien werden nicht akzeptiert. |
NotFileFilter |
Es wendet ein logisches NICHT auf einen bestehenden Filter an. |
AndFileFilter |
Es verknüpft die beiden Filter mit einem logischen UND . |
OrFileFilter |
Es kombiniert zwei Filter mit einem logischen ODER . |
Lassen Sie uns versuchen, einen Filter aus den oben genannten Methoden in einem Beispiel zu verwenden:
package delftstack;
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.filefilter.SuffixFileFilter;
public class Example {
public static void main(String[] args) {
try {
Suffix_FileFilter();
} catch (IOException iox) {
System.out.println(iox.getMessage());
}
}
public static void Suffix_FileFilter() throws IOException {
// current directory
File Current_Directory = new File(".");
// all files and directories in the current directory
String[] All_Files = Current_Directory.list();
System.out.println("All files and directories :\n");
for (int i = 0; i < All_Files.length; i++) {
System.out.println(All_Files[i]);
}
System.out.println("\nThe Text Files: \n");
String[] Text_Files = Current_Directory.list(new SuffixFileFilter("txt"));
for (int i = 0; i < Text_Files.length; i++) {
System.out.println(Text_Files[i]);
}
}
}
Der obige Code verwendet den SuffixFileFilter
, um die Textdateien aus dem angegebenen Verzeichnis zu filtern. Es listet auch alle Dateien und Unterverzeichnisse des bereitgestellten Ordners auf.
Siehe die Ausgabe:
All files and directories :
.classpath
.gitignore
.project
bin
delftstack.fxml
delftstack.fxml.bak
delftstack.pdf
Delftstack.png
delftstack.txt
delftstack.xml
delftstack.zip
DemoClassBytes.ser
employee.json
ExampleClassBytes.ser
Makefile
pom.xml
PythonFromJava.py
readme.md
src
student.json
The Text Files:
delftstack.txt
Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.
LinkedIn Facebook