Apache Commons IO - Kurzanleitung

Die Apache Commons IO-Bibliothek bietet verschiedene Dienstprogrammklassen für allgemeine Vorgänge für Datei-E / A, die eine Vielzahl von Anwendungsfällen abdecken. Es hilft, das Schreiben von Boilerplate-Code zu vermeiden.

Die Apache Commons IO-Bibliothek bietet Klassen für die folgenden Kategorien:

Dienstprogrammklassen

Diese Klassen, die unter sind org.apache.commons.ioPaket, bietet Datei- und Zeichenfolgenvergleich. Es folgen einige Beispiele.

  • IOUtils- Bietet Dienstprogrammmethoden zum Lesen, Schreiben und Kopieren von Dateien. Die Methoden arbeiten mit InputStream, OutputStream, Reader und Writer.

  • FilenameUtils- Bietet eine Methode zum Arbeiten mit Dateinamen ohne Verwendung von File Object. Es funktioniert auf ähnliche Weise auf verschiedenen Betriebssystemen.

  • FileUtils - Bietet eine Methode zum Bearbeiten von Dateien wie Verschieben, Öffnen, Überprüfen der Existenz, Lesen von Dateien usw. Diese Methoden verwenden File Object.

  • IOCase - Bietet eine Methode zur Manipulation und zum Vergleich von Zeichenfolgen.

  • FileSystemUtils - Bietet eine Methode zum Abrufen des freien Speicherplatzes auf einem Laufwerk.

  • LineIterator - Bietet eine flexible Möglichkeit, mit einer zeilenbasierten Datei zu arbeiten.

Filterklassen

Filterklassen, die sich unter dem Paket org.apache.commons.io.filefilter befinden, bieten Methoden zum Filtern von Dateien basierend auf logischen Kriterien anstelle von auf Zeichenfolgen basierenden langwierigen Vergleichen. Es folgen einige Beispiele.

  • NameFileFilter - Filtert Dateinamen nach einem Namen.

  • WildcardFileFilter - Filtert Dateien mit den mitgelieferten Platzhaltern.

  • SuffixFileFilter- Filtert Dateien basierend auf dem Suffix. Dies wird zum Abrufen aller Dateien eines bestimmten Typs verwendet.

  • PrefixFileFilter - Filtert Dateien basierend auf dem Präfix.

  • OrFileFilter- Bietet bedingte ODER-Logik für eine Liste von Dateifiltern. Gibt true zurück, wenn Filter in der Liste true zurückgeben. Andernfalls wird false zurückgegeben.

  • AndFileFilter- Bietet Bedingungen und Logik für eine Liste von Dateifiltern. Gibt false zurück, wenn Filter in der Liste false zurückgeben. Andernfalls wird true zurückgegeben.

Dateimonitor-Klassen

Dateimonitor-Klassen, die unter sind org.apache.commons.io.monitorPaket, bietet Kontrolle zum Verfolgen von Änderungen in einer bestimmten Datei oder einem bestimmten Ordner und ermöglicht entsprechende Aktionen für die Änderungen. Es folgen einige Beispiele.

  • FileEntry- Gibt den Status einer Datei oder eines Verzeichnisses an. Dateiattribute zu einem bestimmten Zeitpunkt.

  • FileAlterationObserver - Stellt den Status von Dateien unterhalb eines Stammverzeichnisses dar, überprüft das Dateisystem und benachrichtigt Listener über Ereignisse zum Erstellen, Ändern oder Löschen.

  • FileAlterationMonitor - Stellt einen Thread dar, der einen Überwachungsthread erzeugt, der in einem bestimmten Intervall einen registrierten FileAlterationObserver auslöst.

Komparatorklassen

Dateimonitorklassen unter org.apache.commons.io.comparator Paket ermöglichen das einfache Vergleichen und Sortieren von Dateien und Verzeichnissen.

  • NameFileComparator - Vergleichen Sie die Namen zweier Dateien.

  • SizeFileComparator - Vergleichen Sie die Größe von zwei Dateien.

  • LastModifiedFileComparator - Vergleichen Sie die letzten Änderungsdaten von zwei Dateien.

Stream-Klassen

Es gibt mehrere Implementierungen von InputStream unter dem Paket org.apache.commons.io.input und von OutputStream unter dem Paket org.apache.commons.io.output, um nützliche Aufgaben für Streams auszuführen. Es folgen einige Beispiele.

  • NullOutputStream - Absorbiert alle fehlerhaft gesendeten Daten.

  • TeeOutputStream - Sendet die Ausgabe an zwei Streams.

  • ByteArrayOutputStream - Schnellere Version der JDK-Klasse.

  • CountingOutputStream - Zählt die Anzahl der Bytes, die durch den Stream geleitet werden.

  • ProxyOutputStream - Ändert die Aufrufe zum Proxy-Stream.

  • LockableFileWriter - Ein FileWriter zum Erstellen von Sperrdateien und zum einfachen Behandeln von Thread-übergreifenden Dateisperren.

In diesem Kapitel erfahren Sie mehr über die Einrichtung der lokalen Umgebung von Apache Commons IO und das Einrichten des Pfads von Commons IO für Windows 2000 / XP, Windows 95/98 / ME usw. Wir werden auch einige beliebte Java-Editoren und kennenlernen Herunterladen des Commons IO-Archivs.

Einrichtung der lokalen Umgebung

Wenn Sie weiterhin bereit sind, Ihre Umgebung für die Programmiersprache Java einzurichten, finden Sie in diesem Abschnitt Anleitungen zum Herunterladen und Einrichten von Java auf Ihrem Computer. Befolgen Sie die unten aufgeführten Schritte, um die Umgebung einzurichten.

Java SE kann unter dem Link kostenlos heruntergeladen werden https://www.oracle.comSie laden also eine Version herunter, die auf Ihrem Betriebssystem basiert.

Befolgen Sie die Anweisungen, um Java herunterzuladen und auszuführen .exeum Java auf Ihrem Computer zu installieren. Sobald Sie Java auf Ihrem Computer installiert haben, müssen Sie Umgebungsvariablen so einstellen, dass sie auf korrekte Installationsverzeichnisse verweisen.

Pfad für Windows 2000 / XP

Lassen Sie uns verstehen, wie Sie den Pfad für Windows 2000 / XP einrichten. Wir gehen davon aus, dass Sie Java installiert habenc:\Program Files\java\jdk Verzeichnis.

  • Klicken Sie mit der rechten Maustaste auf "Arbeitsplatz" und wählen Sie "Eigenschaften".

  • Klicken Sie auf der Registerkarte "Erweitert" auf die Schaltfläche "Umgebungsvariablen".

  • Ändern Sie nun die Variable 'Path' so, dass sie auch den Pfad zur ausführbaren Java-Datei enthält. Wenn der Pfad derzeit auf "C: \ WINDOWS \ SYSTEM32" festgelegt ist, ändern Sie Ihren Pfad in "Lesen"'C:\WINDOWS\SYSTEM32;c:\Program Files\java\jdk\bin'.

Pfad für Windows 95/98 / ME

Lassen Sie uns verstehen, wie Sie den Pfad für Windows 95/98 / ME einrichten. Wir gehen davon aus, dass Sie Java installiert habenc:\Program Files\java\jdk Verzeichnis.

  • Bearbeiten Sie die Datei 'C: \ autoexec.bat' und fügen Sie am Ende die folgende Zeile hinzu: 'SET PATH =% PATH%; C: \ Programme \ java \ jdk \ bin'

Pfad für Linux, UNIX, Solaris, FreeBSD

Die Umgebungsvariable PATH sollte so eingestellt werden, dass sie darauf hinweist, wo die Java-Binärdateien installiert wurden. Informationen hierzu finden Sie in Ihrer Shell-Dokumentation.

Wenn Sie beispielsweise bash als Shell verwenden, fügen Sie die folgende Zeile am Ende Ihrer '.bashrc: export PATH = / path / to / java: $ PATH' hinzu.

Beliebte Java-Editoren

Zum Schreiben Ihrer Java-Programme benötigen Sie einen Texteditor. Es gibt viele hoch entwickelte IDEs auf dem Markt. Im Moment können Sie jedoch eine der folgenden Möglichkeiten in Betracht ziehen:

  • Notepad - Auf einem Windows-Computer können Sie einen einfachen Texteditor wie Notepad (für dieses Lernprogramm empfohlen) und TextPad verwenden.

  • Netbeans - Es ist eine Java-IDE, die Open Source und kostenlos ist und von heruntergeladen werden kann https://www.netbeans.org/index.html.

  • Eclipse - Es ist auch eine Java-IDE, die von der Open-Source-Community von eclipse entwickelt wurde und von heruntergeladen werden kann https://www.eclipse.org/.

Laden Sie das Common IO Archive herunter

Laden Sie die neueste Version der Apache Common IO-JAR-Datei von commons-io-2.6- bin.zip herunter, die unter download_io.cgi verfügbar ist. Zum Zeitpunkt des Schreibens dieses Tutorials haben wir commons-io-2.6-bin.zip heruntergeladen und kopiert es in C: \> Apache Ordner.

Betriebssystem Archivname
Windows commons-io-2.6-bin.zip
Linux commons-io-2.6-bin.tar.gz
Mac commons-io-2.6-bin.tar.gz

Apache Common IO-Umgebung

Stellen Sie die APACHE_HOMEUmgebungsvariable, die auf den Speicherort des Basisverzeichnisses verweist, in dem Apache jar auf Ihrem Computer gespeichert ist. Angenommen, wir haben commons-io-2.6-bin.zip im Apache-Ordner auf verschiedenen Betriebssystemen wie folgt extrahiert.

Betriebssystem Ausgabe
Windows Setzen Sie die Umgebungsvariable APACHE_HOME auf C: \ Apache
Linux export APACHE_HOME = / usr / local / Apache
Mac export APACHE_HOME = / Library / Apache

Setzen Sie die Variable CLASSPATH

Stellen Sie die CLASSPATHUmgebungsvariable, die auf den Common IO-JAR-Speicherort verweist. Angenommen, Sie haben commons-io-2.6-bin.zip wie folgt im Apache-Ordner auf verschiedenen Betriebssystemen gespeichert.

Betriebssystem Ausgabe
Windows Setzen Sie die Umgebungsvariable CLASSPATH auf% CLASSPATH%;% APACHE_HOME% \ commons-io-2.6.jar;.;
Linux export CLASSPATH = $ CLASSPATH: $ APACHE_HOME / commons-io-2.6.jar:.
Mac export CLASSPATH = $ CLASSPATH: $ APACHE_HOME / commons-io-2.6.jar:.

IOUtils bieten Dienstprogrammmethoden zum Lesen, Schreiben und Kopieren von Dateien. Die Methoden arbeiten mit InputStream, OutputStream, Reader und Writer.

Klassenerklärung

Es folgt die Erklärung für org.apache.commons.io.IOUtils Klasse -

public class IOUtils
   extends Object

Merkmale von IOUtils

Die Funktionen von IOUtils sind unten angegeben -

  • Bietet statische Dienstprogrammmethoden für Eingabe- / Ausgabeoperationen.

  • toXXX () - liest Daten aus einem Stream.

  • write () - schreibt Daten in einen Stream.

  • copy () - kopiert alle Daten in einen Stream in einen anderen Stream.

  • contentEquals - Vergleichen Sie den Inhalt von zwei Streams.

Beispiel für die IOUtils-Klasse

Hier ist die Eingabedatei, die wir analysieren müssen -

Welcome to TutorialsPoint. Simply Easy Learning.

IOTester.java

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import org.apache.commons.io.IOUtils;
public class IOTester {
   public static void main(String[] args) {
      try {
         //Using BufferedReader
         readUsingTraditionalWay();
         //Using IOUtils
         readUsingIOUtils();
      } catch(IOException e) {
         System.out.println(e.getMessage());
      }
   }
   //reading a file using buffered reader line by line
   public static void readUsingTraditionalWay() throws IOException {
      try(BufferedReader bufferReader = new BufferedReader( new InputStreamReader(
      new FileInputStream("input.txt") ) )) {
         String line;
         while( ( line = bufferReader.readLine() ) != null ) {
            System.out.println( line );
         }
      }
   }
   //reading a file using IOUtils in one go
   public static void readUsingIOUtils() throws  IOException {
      try(InputStream in = new FileInputStream("input.txt")) {
         System.out.println( IOUtils.toString( in , "UTF-8") );
      }
   }
}

Ausgabe

Es wird das folgende Ergebnis gedruckt -

Welcome to TutorialsPoint. Simply Easy Learning.
Welcome to TutorialsPoint. Simply Easy Learning.

FileUtils bieten eine Methode zum Bearbeiten von Dateien wie Verschieben, Öffnen, Überprüfen der Existenz, Lesen von Dateien usw. Diese Methoden verwenden File Object.

Klassenerklärung

Es folgt die Deklaration für die Klasse org.apache.commons.io.FileUtils -

public class FileUtils
   extends Object

Funktionen von FileUtils

Die Funktionen von FileUtils sind unten angegeben -

  • Methoden zum Schreiben in eine Datei.

  • Methoden zum Lesen aus einer Datei.

  • Methoden zum Erstellen eines Verzeichnisses mit übergeordneten Verzeichnissen.

  • Methoden zum Kopieren von Dateien und Verzeichnissen.

  • Methoden zum Löschen von Dateien und Verzeichnissen.

  • Methoden zum Konvertieren in und von einer URL.

  • Methoden zum Auflisten von Dateien und Verzeichnissen nach Filter und Erweiterung.

  • Methoden zum Vergleichen des Dateiinhalts.

  • Methoden zum Ablegen des letzten Änderungsdatums.

  • Methoden zur Berechnung einer Prüfsumme.

Beispiel für die FileUtils-Klasse

Hier ist die Eingabedatei, die wir analysieren müssen -

Welcome to TutorialsPoint. Simply Easy Learning.

IOTester.java

import java.io.File;
import java.io.IOException;
import java.nio.charset.Charset;
import org.apache.commons.io.FileUtils;
public class IOTester {
   public static void main(String[] args) {
      try {
         //Using FileUtils
         usingFileUtils();
      } catch(IOException e) {
         System.out.println(e.getMessage());
      }
   }
   public static void usingFileUtils() throws IOException {
      //get the file object
      File file = FileUtils.getFile("input.txt");
      //get the temp directory
      File tmpDir = FileUtils.getTempDirectory();
      System.out.println(tmpDir.getName());
      //copy file to temp directory
      FileUtils.copyFileToDirectory(file, tmpDir);
      //create a new file
      File newTempFile = FileUtils.getFile(tmpDir, file.getName());
      //get the content
      String data = FileUtils.readFileToString(newTempFile, Charset.defaultCharset());
      //print the content
      System.out.println(data);
   }
}

Ausgabe

Die Ausgabe wird unten erwähnt -

Temp
Welcome to TutorialsPoint. Simply Easy Learning.

FilenameUtils bieten eine Methode zum Arbeiten mit Dateinamen ohne Verwendung von File Object. Es funktioniert auf ähnliche Weise auf verschiedenen Betriebssystemen. Diese Klasse löst Probleme beim Wechsel von einem Windows-basierten Entwicklungscomputer zu einem Unix-basierten Produktionscomputer.

Klassenerklärung

Es folgt die Erklärung für org.apache.commons.io.FilenameUtils Klasse -

public class FilenameUtils
   extends Object

Funktionen von FileNameUtils

Diese Klasse definiert sechs Komponenten innerhalb eines Dateinamens. Betrachten Sie einen Beispielstandort alsC:\dev\project\file.txt. Dann sind die Komponenten wie folgt:

  • Präfix - C: \

  • Relativer Pfad - dev \ project \

  • Absoluter Pfad - C: \ dev \ project \

  • Name - file.txt

  • Basisname - Datei

  • Erweiterung - txt

Fügen Sie dem Dateinamen ein Trennzeichen hinzu, um ein Verzeichnis zu identifizieren.

Beispiel für die FilenameUtils-Klasse

Das Beispiel der FilenameUtils-Klasse ist unten angegeben -

IOTester.java

import java.io.IOException;
import org.apache.commons.io.FilenameUtils;
public class IOTester {
   public static void main(String[] args) {
      try {
         //Using FilenameUtils
         usingFilenameUtils();
      } catch(IOException e) {
         System.out.println(e.getMessage());
      }
   }
   public static void usingFilenameUtils() throws IOException {
      String path = "C:\\dev\\project\\file.txt";
      System.out.println("Full Path: " +FilenameUtils.getFullPath(path));
      System.out.println("Relative Path: " +FilenameUtils.getPath(path));
      System.out.println("Prefix: " +FilenameUtils.getPrefix(path));
      System.out.println("Extension: " + FilenameUtils.getExtension(path));
      System.out.println("Base: " + FilenameUtils.getBaseName(path));
      System.out.println("Name: " + FilenameUtils.getName(path));
      String filename = "C:/commons/io/../lang/project.xml";
      System.out.println("Normalized Path: " + FilenameUtils.normalize(filename));
   }
}

Ausgabe

Die Ausgabe ist unten angegeben -

Full Path: C:\dev\project\
Relative Path: dev\project\
Prefix: C:\
Extension: txt
Base: file
Name: file.txt
Normalized Path: C:\commons\lang\project.xml

FileSystemUtils bieten eine Methode zum Abrufen des freien Speicherplatzes auf einem Laufwerk.

Klassenerklärung

Es folgt die Erklärung für org.apache.commons.io.FileSystemUtils Klasse -

public class FileSystemUtils
   extends Object

Beispiel für die FileSystemUtils-Klasse

Im Folgenden finden Sie ein Beispiel für die FileSystemUtils-Klasse -

IOTester.java

import java.io.IOException;
import org.apache.commons.io.FileSystemUtils;
public class IOTester {
   public static void main(String[] args) {
      try {
         System.out.println("Free Space " + FileSystemUtils.freeSpaceKb("C:/") + " Bytes");
      } catch(IOException e) {
         System.out.println(e.getMessage());
      }
   }
}

Ausgabe

Unten ist die Ausgabe angegeben -

Free Space 61355640 kb

Aufzählung der IO-Groß- / Kleinschreibung. Unterschiedliche Betriebssysteme haben unterschiedliche Regeln für die Groß- und Kleinschreibung von Dateinamen. Beispielsweise unterscheidet Windows bei der Benennung von Dateien nicht zwischen Groß- und Kleinschreibung, während bei Unix zwischen Groß- und Kleinschreibung unterschieden wird. IOCase erfasst diesen Unterschied und bietet eine Aufzählung, um zu steuern, wie Dateinamenvergleiche durchgeführt werden sollen. Es bietet auch Methoden zur Verwendung der Aufzählung zum Durchführen von Vergleichen.

Aufzählungserklärung

Es folgt die Deklaration für org.apache.commons.io.IOCase Enum -

public enum IOCase
   extends Enum<IOCase> implements Serializable

Beispiel für IOCase Enum

Ein Beispiel für IOCase Enum ist unten angegeben -

IOTester.java

import java.io.IOException;
import org.apache.commons.io.IOCase;
public class IOTester {
   public static void main(String[] args) {
      try {
         usingIOCase();
      } catch(IOException e) {
         System.out.println(e.getMessage());
      }
   }
   public static void usingIOCase() throws IOException {
      String text = "Welcome to TutorialsPoint. Simply Easy Learning.";
      String text1 = "WELCOME TO TUTORIALSPOINT. SIMPLY EASY LEARNING.";
      System.out.println("Ends with Learning (case sensitive): " + IOCase.SENSITIVE.checkEndsWith(text1, "Learning."));
      System.out.println("Ends with Learning (case insensitive): " + IOCase.INSENSITIVE.checkEndsWith(text1, "Learning."));
      System.out.println("Equality Check (case sensitive): " + IOCase.SENSITIVE.checkEquals(text, text1));
      System.out.println("Equality Check (case insensitive): " + IOCase.INSENSITIVE.checkEquals(text, text1));
   }
}

Ausgabe

Es wird das folgende Ergebnis gedruckt -

Ends with Learning (case sensitive): false
Ends with Learning (case insensitive): true
Equality Check (case sensitive): false
Equality Check (case insensitive): true

LineIterator bietet eine flexible Möglichkeit, mit einer zeilenbasierten Datei zu arbeiten. Lassen Sie uns in diesem Kapitel etwas darüber lernen.

Klassenerklärung

Es folgt die Erklärung für org.apache.commons.io.LineIterator Klasse -

public class LineIterator
   extends Object implements Iterator<String>, Closeable

Beispiel einer LineIterator-Klasse

Hier ist die Eingabedatei, die wir analysieren müssen -

Welcome to TutorialsPoint. Simply Easy Learning.
Learn web technologies,
prepare exams,
code online,
all at one place.

IOTester.java

import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.LineIterator;
public class IOTester {
   public static void main(String[] args) {
      try {
         usingLineIterator();
      } catch(IOException e) {
         System.out.println(e.getMessage());
      }
   }
   public static void usingLineIterator() throws IOException {
      //get the file object
      File file = FileUtils.getFile("input.txt");
      try(LineIterator lineIterator = FileUtils.lineIterator(file)) {
         System.out.println("Contents of input.txt");
         while(lineIterator.hasNext()) {
            System.out.println(lineIterator.next());
         }
      }
   }
}

Ausgabe

Es wird das folgende Ergebnis gedruckt -

Contents of input.txt
Welcome to TutorialsPoint. Simply Easy Learning.
Learn web technologies,
prepare exams,
code online,
all at one place.

NameFileFilter in Commons IO filtert die Dateinamen nach einem Namen.

Klassenerklärung

Es folgt die Erklärung für org.apache.commons.io.filefilter.NameFileFilter Klasse:

public class NameFileFilter
   extends AbstractFileFilter implements Serializable

Beispiel für die NameFileFilter-Klasse

Hier ist die Eingabedatei, die wir analysieren müssen -

Welcome to TutorialsPoint. Simply Easy Learning.

Drucken wir alle Dateien und Verzeichnisse im aktuellen Verzeichnis und filtern dann eine Datei mit dem Namen Input.txt.

IOTester.java

import java.io.File;
import java.io.IOException;
import org.apache.commons.io.IOCase;
import org.apache.commons.io.filefilter.NameFileFilter;
public class IOTester {
   public static void main(String[] args) {
      try {
         usingNameFileFilter();
      } catch(IOException e) {
         System.out.println(e.getMessage());
      }
   }
   public static void usingNameFileFilter() throws IOException {
      //get the current directory
      File currentDirectory = new File(".");
      //get names of all files and directory in current directory
      String[] files = currentDirectory.list();
      System.out.println("All files and Folders.\n");
      for( int i = 0; i < files.length; i++ ) {
         System.out.println(files[i]);
      }
      System.out.println("\nFile with name input.txt\n");
      String[] acceptedNames = {"input", "input.txt"};
      String[] filesNames = currentDirectory.list( new NameFileFilter(acceptedNames, IOCase.INSENSITIVE) );
      for( int i = 0; i < filesNames.length; i++ ) {
         System.out.println(filesNames[i]);
      }
   }
}

Ausgabe

Es wird das folgende Ergebnis gedruckt -

All files and Folders.

.classpath
.project
.settings
bin
input.txt
src

File with name input.txt

input.txt

WildcardFileFilter in Commons IO filtert die Dateien mithilfe der mitgelieferten Platzhalter.

Klassenerklärung

Es folgt die Erklärung für org.apache.commons.io.filefilter.WildcardFileFilter Klasse -

public class WildcardFileFilter
   extends AbstractFileFilter implements Serializable

Beispiel für eine WildcardFileFilter-Klasse

Hier ist die Eingabedatei, die wir analysieren müssen

Welcome to TutorialsPoint. Simply Easy Learning.

Drucken wir alle Dateien und Verzeichnisse im aktuellen Verzeichnis und filtern dann eine Datei, deren Name mit endet t.

IOTester.java

import java.io.File;
import java.io.IOException;
import org.apache.commons.io.filefilter.WildcardFileFilter;
public class IOTester {
   public static void main(String[] args) {
      try {
         usingWildcardFileFilter();
      } catch(IOException e) {
         System.out.println(e.getMessage());
      }
   }
   public static void usingWildcardFileFilter() throws IOException {
      //get the current directory
      File currentDirectory = new File(".");
      //get names of all files and directory in current directory
      String[] files = currentDirectory.list();
      System.out.println("All files and Folders.\n");
      for( int i = 0; i < files.length; i++ ) {
        System.out.println(files[i]);
      }
      System.out.println("\nFile name ending with t.\n");
      String[] filesNames = currentDirectory.list( new  WildcardFileFilter("*t"));
      for( int i = 0; i < filesNames.length; i++ ) {
        System.out.println(filesNames[i]);
      }
   }
}

Ausgabe

Das folgende Ergebnis wird gedruckt.

All files and Folders.

.classpath
.project
.settings
bin
input.txt
src

File name ending with t

.project
input.txt

SuffixFileFilter filtert die Dateien, die auf dem Suffix basieren. Dies wird zum Abrufen aller Dateien eines bestimmten Typs verwendet.

Klassenerklärung

Es folgt die Erklärung für org.apache.commons.io.filefilter.SuffixFileFilter Klasse -

public class SuffixFileFilter
   extends AbstractFileFilter implements Serializable

Beispiel für die SuffixFileFilter-Klasse

Hier ist die Eingabedatei, die wir analysieren müssen -

Welcome to TutorialsPoint. Simply Easy Learning.

Drucken wir alle Dateien und Verzeichnisse im aktuellen Verzeichnis und filtern dann eine Datei mit der Erweiterung txt.

IOTester.java

import java.io.File;
import java.io.IOException;
import org.apache.commons.io.filefilter.SuffixFileFilter;
public class IOTester {
   public static void main(String[] args) {
      try {
         usingSuffixFileFilter();
      } catch(IOException e) {
         System.out.println(e.getMessage());
      }
   }
   public static void usingSuffixFileFilter() throws IOException {
      //get the current directory
      File currentDirectory = new File(".");
      //get names of all files and directory in current directory
      String[] files = currentDirectory.list();
      System.out.println("All files and Folders.\n");
      for( int i = 0; i < files.length; i++ ) {
         System.out.println(files[i]);
      }
      System.out.println("\nFile with extenstion txt\n");
      String[] filesNames = currentDirectory.list( new SuffixFileFilter("txt"));
      for( int i = 0; i < filesNames.length; i++ ) {
         System.out.println(filesNames[i]);
      }
   }
}

Ausgabe

Das folgende Ergebnis wird gedruckt.

All files and Folders.

.classpath
.project
.settings
bin
input.txt
src

File with extenstion txt

input.txt

PrefixFileFilter filtert die Dateien, die auf dem Präfix basieren.

Klassenerklärung

Es folgt die Erklärung für org.apache.commons.io.filefilter.PrefixFileFilter Klasse -

public class PrefixFileFilter
   extends AbstractFileFilter implements Serializable

Beispiel für die PrefixFileFilter-Klasse

Hier ist die Eingabedatei, die wir analysieren müssen -

Welcome to TutorialsPoint. Simply Easy Learning.

Drucken wir alle Dateien und Verzeichnisse im aktuellen Verzeichnis und filtern dann eine Datei mit einem Namen, der mit der Eingabe beginnt.

IOTester.java

import java.io.File;
import java.io.IOException;
import org.apache.commons.io.filefilter.PrefixFileFilter;
public class IOTester {
   public static void main(String[] args) {
      try {
         usingPrefixFileFilter();
      } catch(IOException e) {
         System.out.println(e.getMessage());
      }
   }
   public static void usingPrefixFileFilter() throws IOException {
      //get the current directory
      File currentDirectory = new File(".");
      //get names of all files and directory in current directory
      String[] files = currentDirectory.list();
      System.out.println("All files and Folders.\n");
      for( int i = 0; i < files.length; i++ ) {
         System.out.println(files[i]);
      }
      System.out.println("\nFile starting with input\n");
      String[] filesNames = currentDirectory.list( new PrefixFileFilter("input") );
      for( int i = 0; i < filesNames.length; i++ ) {
         System.out.println(filesNames[i]);
      }
   }
}

Ausgabe

Es wird das folgende Ergebnis gedruckt -

All files and Folders.

.classpath
.project
.settings
bin
input.txt
src

File with extenstion txt

input.txt

OrFileFilter bietet bedingte ODER-Logik für eine Liste von Dateifiltern. Es gibt true zurück, wenn Filter in der Liste true zurückgeben. Andernfalls wird false zurückgegeben.

Klassenerklärung

Es folgt die Erklärung für org.apache.commons.io.filefilter.OrFileFilter Klasse -

public class OrFileFilter
   extends AbstractFileFilter implements ConditionalFileFilter, Serializable

Beispiel einer OrFileFilter-Klasse

Hier ist die Eingabedatei, die wir analysieren müssen -

Welcome to TutorialsPoint. Simply Easy Learning.

Lassen Sie uns alle Dateien und Verzeichnisse im aktuellen Verzeichnis drucken und dann eine Datei filtern, deren Name mit beginnt. oder endet mit t.

IOTester.java

import java.io.File;
import java.io.IOException;
import org.apache.commons.io.filefilter.OrFileFilter;
import org.apache.commons.io.filefilter.PrefixFileFilter;
import org.apache.commons.io.filefilter.WildcardFileFilter;
public class IOTester {
   public static void main(String[] args) {
      try {
         usingOrFileFilter();
      } catch(IOException e) {
         System.out.println(e.getMessage());
      }
   }
   public static void usingOrFileFilter() throws IOException {
      //get the current directory
      File currentDirectory = new File(".");
      //get names of all files and directory in current directory
      String[] files = currentDirectory.list();
      System.out.println("All files and Folders.\n");
      for( int i = 0; i < files.length; i++ ) {
         System.out.println(files[i]);
      }
      System.out.println("\nFile starting with . or ends with t\n");
      String[] filesNames = currentDirectory.list( new OrFileFilter(new PrefixFileFilter("."), new WildcardFileFilter("*t")));
      for( int i = 0; i < filesNames.length; i++ ) {
         System.out.println(filesNames[i]);
      }
   }
}

Ausgabe

Das folgende Ergebnis wird gedruckt.

All files and Folders.

.classpath
.project
.settings
bin
input.txt
src

File starting with . or ends with t

.classpath
.project
.settings
input.txt

AndFileFilter bietet Bedingungen und Logik für eine Liste von Dateifiltern. Es gibt true zurück, wenn alle Filter in der Liste true zurückgeben. Andernfalls wird false zurückgegeben.

Klassenerklärung

Es folgt die Erklärung für org.apache.commons.io.filefilter.AndFileFilter Klasse -

public class AndFileFilter
   extends AbstractFileFilter implements ConditionalFileFilter, Serializable

Beispiel für die AndFileFilter-Klasse

Hier ist die Eingabedatei, die wir analysieren müssen -

Welcome to TutorialsPoint. Simply Easy Learning.

Lassen Sie uns alle Dateien und Verzeichnisse im aktuellen Verzeichnis drucken und dann eine Datei filtern, deren Name mit beginnt. und endet mit t.

IOTester.java

import java.io.File;
import java.io.IOException;
import org.apache.commons.io.filefilter.AndFileFilter;
import org.apache.commons.io.filefilter.PrefixFileFilter;
import org.apache.commons.io.filefilter.WildcardFileFilter;
public class IOTester {
   public static void main(String[] args) {
      try {
         usingAndFileFilter();
      } catch(IOException e) {
         System.out.println(e.getMessage());
      }
   }
   public static void usingAndFileFilter() throws IOException {
      //get the current directory
      File currentDirectory = new File(".");
      //get names of all files and directory in current directory
      String[] files = currentDirectory.list();
      System.out.println("All files and Folders.\n");
      for( int i = 0; i < files.length; i++ ) {
         System.out.println(files[i]);
      }
      System.out.println("\nFile starting with . and ends with t\n");
      String[] filesNames = currentDirectory.list(new AndFileFilter(
         new PrefixFileFilter("."), new WildcardFileFilter("*t")));
      for( int i = 0; i < filesNames.length; i++ ) {
        System.out.println(filesNames[i]);
      }
   }
}

Ausgabe

Das folgende Ergebnis wird gedruckt.

All files and Folders.

.classpath
.project
.settings
bin
input.txt
src

File starting with . or ends with t

.project

FileEntry gibt den Status einer Datei oder eines Verzeichnisses an. Dateiattribute zu einem bestimmten Zeitpunkt.

Klassenerklärung

Es folgt die Erklärung für org.apache.commons.io.monitor.FileEntry Klasse -

public class FileEntry
   extends Object implements Serializable

Funktionen von FileEntry

Das FileEntry-Klassenobjekt stellt zu einem bestimmten Zeitpunkt die folgenden Dateiattribute bereit.

  • getName () - Dateiname.

  • exist () - prüft, ob eine Datei existiert oder nicht.

  • isDirectory () - prüft, ob die Datei ein Verzeichnis ist.

  • lastModified () - gibt die Uhrzeit des letzten geänderten Datums an.

  • listFiles () - gibt den Inhalt des Verzeichnisses an.

Beispiel für eine FileEntry-Klasse

Hier ist die Eingabedatei, die wir analysieren müssen -

Welcome to TutorialsPoint. Simply Easy Learning.

IOTester.java

import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.monitor.FileEntry;
public class IOTester {
   public static void main(String[] args) {
      try {
         usingFileEntry();
      } catch(IOException e) {
         System.out.println(e.getMessage());
      }
   }
   public static void usingFileEntry() throws IOException {
      //get the file object
      File file = FileUtils.getFile("input.txt");
      FileEntry fileEntry = new FileEntry(file);
      System.out.println("Monitored File: " + fileEntry.getFile());
      System.out.println("File name: " + fileEntry.getName());
      System.out.println("Is Directory: " + 	fileEntry.isDirectory());
   }
}

Ausgabe

Das folgende Ergebnis wird gedruckt.

Monitored File: input.txt
File name: input.txt
Is Directory: false

FileAlterationObserver repräsentiert den Status von Dateien unterhalb eines Stammverzeichnisses, überprüft das Dateisystem und benachrichtigt Listener über das Erstellen, Ändern oder Löschen von Ereignissen.

Klassenerklärung

Es folgt die Erklärung für

org.apache.commons.io.monitor.FileAlterationObserver Klasse -

public class FileAlterationObserver
   extends Object implements Serializable

Beispiel für die FileAlterationObserver-Klasse

Hier ist die Eingabedatei, die wir analysieren müssen -

Welcome to TutorialsPoint. Simply Easy Learning.

IOTester.java

import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileDeleteStrategy;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.monitor.FileAlterationListenerAdaptor;
import org.apache.commons.io.monitor.FileAlterationMonitor;
import org.apache.commons.io.monitor.FileAlterationObserver;
public class IOTester {
   public static void main(String[] args) {
      try {
         usingFileAlterationObserver();
      } catch(IOException e) {
         System.out.println(e.getMessage());
      }
   }
   public static void usingFileAlterationObserver() throws IOException {
      //get the file object
      File inputFile = FileUtils.getFile("input.txt");
      String absolutePath = inputFile.getAbsolutePath();
      String parent = absolutePath.substring(0,absolutePath.indexOf("input.txt"));
      File parentDirectory = FileUtils.getFile(parent);
      FileAlterationObserver observer = new
      FileAlterationObserver(parentDirectory);
      observer.addListener(new FileAlterationListenerAdaptor() {
         @Override
         public void onDirectoryCreate(File file) {
            System.out.println("Folder created: " + file.getName());
         }
         @Override
            public void onDirectoryDelete(File file) {
               System.out.println("Folder deleted: " + file.getName());
            }
         @Override
            public void onFileCreate(File file) {
               System.out.println("File created: " + file.getName());
            }
         @Override
            public void onFileDelete(File file) {
               Syst em.out.println("File deleted: " + file.getName());
            }
        });
       //create a monitor to check changes after every 500 ms
       FileAlterationMonitor monitor = new FileAlterationMonitor(500, observer);
       try {
          monitor.start();
         //create a new directory
         File newFolder = new File("test");
         File newFile = new File("test1");
         newFolder.mkdirs();
         Thread.sleep(1000);
         newFile.createNewFile();
         Thread.sleep(1000);
         FileDeleteStrategy.NORMAL.delete(newFolder);
         Thread.sleep(1000);
         FileDeleteStrategy.NORMAL.delete(newFile);
         Thread.sleep(1000);
         monitor.stop(10000);
      } catch(IOException e) {
         System.out.println(e.getMessage());
      } catch(InterruptedException e) {
         System.out.println(e.getMessage());
      } catch (Exception e) {
         System.out.println(e.getMessage());
      }
   }
}

Ausgabe

Das folgende Ergebnis wird gedruckt.

Folder created: test
File created: test1
Folder deleted: test
File deleted: test1

FileAlterationMonitor stellt einen Thread dar, der einen Überwachungsthread erzeugt, der in einem bestimmten Intervall einen registrierten FileAlterationObserver auslöst.

Klassenerklärung

Es folgt die Deklaration für org.apache.commons.io.monitor.FileAlterationMonitor Class -

public final class FileAlterationMonitor
   extends Object implements Runnable

Beispiel für die FileAlterationMonitor-Klasse

Here is the input file we need to parse −

Welcome to TutorialsPoint. Simply Easy Learning.

IOTester.java

import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileDeleteStrategy;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.monitor.FileAlterationListenerAdaptor;
import org.apache.commons.io.monitor.FileAlterationMonitor;
import org.apache.commons.io.monitor.FileAlterationObserver;
public class IOTester {
   public static void main(String[] args) {
      try {
         usingFileAlterationMonitor();
      } catch(IOException e) {
         System.out.println(e.getMessage());
      }
   }
   public static void usingFileAlterationMonitor() throws IOException {
      //get the file object
      File inputFile = FileUtils.getFile("input.txt");
      String absolutePath = inputFile.getAbsolutePath();
      String parent = absolutePath.substring(0,absolutePath.indexOf("input.txt"));
      File parentDirectory = FileUtils.getFile(parent);
      FileAlterationObserver observer = new
      FileAlterationObserver(parentDirectory);
      observer.addListener(new FileAlterationListenerAdaptor(){
         @Override
         public void onDirectoryCreate(File file) {
            System.out.println("Folder created: " + file.getName());
         }
         @Override
         public void onDirectoryDelete(File file) {
            System.out.println("Folder deleted: " + file.getName());
         }
         @Override
         public void onFileCreate(File file) {
            System.out.println("File created: " + file.getName());
         }
         @Override
         public void onFileDelete(File file) {
            System.out.println("File deleted: " + file.getName());
         }
      });
      //create a monitor to check changes after every 500 ms
      FileAlterationMonitor monitor = new FileAlterationMonitor(500, observer);
      try {
         monitor.start();
         //create a new directory
         File newFolder = new File("test");
         File newFile = new File("test1");
         newFolder.mkdirs();
         Thread.sleep(1000);
         newFile.createNewFile();
         Thread.sleep(1000);
         FileDeleteStrategy.NORMAL.delete(newFolder);
         Thread.sleep(1000);
         FileDeleteStrategy.NORMAL.delete(newFile);
         Thread.sleep(1000);
         monitor.stop(10000);
      } catch(IOException e) {
         System.out.println(e.getMessage());
      } catch(InterruptedException e) {
         System.out.println(e.getMessage());
      } catch (Exception e) {
         System.out.println(e.getMessage());
      }
   }
}

Output

It will print the following result.

Folder created: test
File created: test1
Folder deleted: test
File deleted: test1

NameFileComparator compare the names of two files. It can be used to sort the lists or arrays of files, using their name, either in a case-sensitive, case-insensitive or system dependent case sensitive way.

Class Declaration

Following is the declaration for

org.apache.commons.io.comparator.NameFileComparator Class −

public class NameFileComparator
   extends Object implements Serializable

Example of NameFileComparator Class

Here is the input file we need to parse −

Welcome to TutorialsPoint. Simply Easy Learning.

IOTester.java

import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import org.apache.commons.io.IOCase;
import org.apache.commons.io.comparator.NameFileComparator;
import org.apache.commons.io.filefilter.FileFileFilter;
public class IOTester {
   public static void main(String[] args) {
      try {
         usingNameFileComparator();
      } catch(IOException e) {
         System.out.println(e.getMessage());
      }
   }
   public static void usingNameFileComparator() throws IOException {
      //get the current directory
      File currentDirectory = new File(".");
      NameFileComparator comparator = new
      NameFileComparator(IOCase.INSENSITIVE);
      File[] sortedFiles = comparator.sort(currentDirectory.listFiles((FileFilter)FileFileFilter.FILE));
      System.out.println("Sorted By Name: ");
      for(File file:sortedFiles) {
         System.out.println(file.getName());
      }
   }
}

Output

It will print the following result.

Sorted By Name:
.classpath
.project
input.txt

SizeFileComparator compare the sizes of two files/directory. It can be used to sort the lists or arrays of files using their size or directories, based on their number of children.

Class Declaration

Following is the declaration for

org.apache.commons.io.comparator.SizeFileComparator Class −

public class SizeFileComparator
   extends Object implements Serializable

Example of SizeFileComparator Class

Here is the input file we need to parse −

Welcome to TutorialsPoint. Simply Easy Learning.

IOTester.java

import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import org.apache.commons.io.comparator.SizeFileComparator;
import org.apache.commons.io.filefilter.FileFileFilter;
public class IOTester {
   public static void main(String[] args) {
      try {
         usingSizeFileComparator();
      } catch(IOException e) {
         System.out.println(e.getMessage());
      }
   } 
   public static void usingSizeFileComparator() throws IOException {
      //get the current directory
      File currentDirectory = new File(".");
      SizeFileComparator comparator = new SizeFileComparator();
      File[] sortedFiles = comparator.sort(currentDirectory.listFiles((FileFilter)FileFileFilter.FILE));
      System.out.println("Sorted By Size: ");
      for(File file:sortedFiles) {
         System.out.println(file.getName() + ", size(kb) :" + file.length());
      }
   }
}

Output

It will print the following result.

Sorted By Size:
input.txt, size:124
.project, size:382
.classpath, size:441

LastModifiedFileComparator compares the last modified dates of two files/directory. It can be used to sort the lists or arrays of files/directories using their last modified dates.

Klassenerklärung

Es folgt die Erklärung für org.apache.commons.io.comparator.LastModifiedFileComparator Klasse -

public class LastModifiedFileComparator
   extends Object implements Serializable

Beispiel für die LastModifiedFileComparator-Klasse

Hier ist die Eingabedatei, die wir analysieren müssen -

Welcome to TutorialsPoint. Simply Easy Learning.

IOTester.java

import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import java.util.Date;
import org.apache.commons.io.comparator.LastModifiedFileComparator;
import org.apache.commons.io.filefilter.FileFileFilter;
public class IOTester {
   public static void main(String[] args) {
      try {
         usingLastModifiedFileComparator();
      } catch(IOException e) {
         System.out.println(e.getMessage());
      }
   }
   public static void usingLastModifiedFileComparator() throws IOException {
      //get the current directory
      File currentDirectory = new File(".");
      LastModifiedFileComparator comparator = new LastModifiedFileComparator();
      File[] sortedFiles = comparator.sort(currentDirectory.listFiles((FileFilter)FileFileFilter.FILE));
      System.out.println("Sorted By Last Modified date: ");
      for(File file:sortedFiles) {
         System.out.println(file.getName() + ", Modified on: " + new Date(file.lastModified()));
      }
   }
}

Ausgabe

Das folgende Ergebnis wird gedruckt.

Sorted By Last Modified date:
.project, Modified on: Thu Oct 12 19:06:45 IST 2017
.classpath, Modified on: Mon Nov 20 13:09:55 IST 2017
input.txt, Modified on: Mon Nov 20 19:27:55 IST 2017

Es ist ein InputStream-Proxy, der transparent eine Kopie aller Bytes schreibt, die aus dem Proxy-Stream in einen bestimmten OutputStream gelesen werden. Der Proxy-Eingabestream wird geschlossen, wenn die Methode close () für diesen Proxy aufgerufen wird. Es kann verwendet werden, um zwei Streams gleichzeitig zu betreiben.

Klassenerklärung

Es folgt die Erklärung für org.apache.commons.io.input.TeeInputStream Klasse -

public class TeeInputStream
   extends ProxyInputStream

Beispiel für die TeeInputStream-Klasse

In diesem Beispiel werden durch Schließen eines TeeInputStream sowohl die TeeInputStream- als auch die TeeOutputStream-Objekte geschlossen.

IOTester.java

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import org.apache.commons.io.input.TeeInputStream;
import org.apache.commons.io.output.TeeOutputStream;
public class IOTester {
   private static final String SAMPLE = "Welcome to TutorialsPoint. Simply Easy
   Learning.";
   public static void main(String[] args) {
      try {
         usingTeeInputStream();
      }catch(IOException e) {
         System.out.println(e.getMessage());
      }
   }
   public static void usingTeeInputStream() throws IOException {
      TeeInputStream teeInputStream = null;
      TeeOutputStream teeOutputStream = null;
      try {
         ByteArrayInputStream inputStream = new
         ByteArrayInputStream(SAMPLE.getBytes("US-ASCII"));
         ByteArrayOutputStream outputStream1 = new ByteArrayOutputStream();
         ByteArrayOutputStream outputStream2 = new ByteArrayOutputStream();
         teeOutputStream = new TeeOutputStream(outputStream1, outputStream2);
         teeInputStream = new TeeInputStream(inputStream, teeOutputStream, true);
         teeInputStream.read(new byte[SAMPLE.length()]);
         System.out.println("Output stream 1: " + outputStream1.toString());
         System.out.println("Output stream 2: " + outputStream2.toString());
      }catch (IOException e) {
         System.out.println(e.getMessage());
      } finally {
         //teeIn.close() closes teeIn and teeOut which in turn closes the out1 and out2.
         try {
            teeInputStream.close();
         } catch (IOException e) {
            System.out.println(e.getMessage());
         }
      }
   }
}

Ausgabe

Das folgende Ergebnis wird gedruckt.

Output stream 1: Welcome to TutorialsPoint. Simply Easy Learning.
Output stream 2: Welcome to TutorialsPoint. Simply Easy Learning.

TeeOutputStream teilt den OutputStream. Es ist nach dem Unix-Befehl 'tee' benannt. Damit kann ein Stream in zwei Streams verzweigt werden.

Klassenerklärung

Es folgt die Erklärung für org.apache.commons.io.output.TeeOutputStream Klasse -

public class TeeOutputStream
   extends ProxyOutputStream

Beispiel für die TeeOutputStream-Klasse

In diesem Beispiel akzeptiert TeeOutputStream zwei Ausgabestreams als Parameter und übergibt Daten an TeeOutputStream-Set-Daten an beide Ausgabestreams.

IOTester.java

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import org.apache.commons.io.input.TeeInputStream;
import org.apache.commons.io.output.TeeOutputStream;
public class IOTester {
   private static final String SAMPLE = "Welcome to TutorialsPoint. Simply Easy
   Learning.";
   public static void main(String[] args) {
      try {
         usingTeeInputStream();
      } catch(IOException e) {
         System.out.println(e.getMessage());
      }
   }
   public static void usingTeeInputStream() throws IOException {
      TeeInputStream teeInputStream = null;
      TeeOutputStream teeOutputStream = null;
      try {
         ByteArrayInputStream inputStream = new
         ByteArrayInputStream(SAMPLE.getBytes("US-ASCII"));
         ByteArrayOutputStream outputStream1 = new ByteArrayOutputStream();
         ByteArrayOutputStream outputStream2 = new ByteArrayOutputStream();
         teeOutputStream = new TeeOutputStream(outputStream1, outputStream2);
         teeInputStream = new TeeInputStream(inputStream, teeOutputStream, true);
         teeInputStream.read(new byte[SAMPLE.length()]);
         System.out.println("Output stream 1: " + outputStream1.toString());
         System.out.println("Output stream 2: " + outputStream2.toString());
      } catch (IOException e) {
         System.out.println(e.getMessage());
      } finally {
         //teeIn.close() closes teeIn and teeOut which in turn closes the out1 and out2.
         try {
            teeInputStream.close();
         } catch (IOException e) {
            System.out.println(e.getMessage());
         }
      }
   }
}

Ausgabe

Das folgende Ergebnis wird gedruckt.

Output stream 1: Welcome to TutorialsPoint. Simply Easy Learning.
Output stream 2: Welcome to TutorialsPoint. Simply Easy Learning.