Dateifilter in Java

Sheeraz Gul 12 Oktober 2023
  1. FileFilter Aus dem IO-Paket in Java
  2. FileFilter Aus dem Apache Commons IO-Paket in Java
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 Gul avatar Sheeraz Gul avatar

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

Verwandter Artikel - Java File