Apache Commons IO - Guida rapida
La libreria Apache Commons IO fornisce varie classi di utilità per operazioni comuni per File IO che coprono un'ampia gamma di casi d'uso. Aiuta a evitare di scrivere codice boilerplate.
La libreria Apache Commons IO fornisce classi per le seguenti categorie:
Classi di utilità
Queste classi che sono sotto org.apache.commons.iopacchetto, fornisce il confronto di file e stringhe. Di seguito sono riportati alcuni esempi.
IOUtils- Fornisce metodi di utilità per leggere, scrivere e copiare file. I metodi funzionano con InputStream, OutputStream, Reader e Writer.
FilenameUtils- Fornisce un metodo per lavorare con i nomi dei file senza utilizzare File Object. Funziona su diversi sistemi operativi in modo simile.
FileUtils - Fornisce un metodo per manipolare i file come lo spostamento, l'apertura, il controllo dell'esistenza, la lettura del file, ecc. Questi metodi utilizzano File Object.
IOCase - Fornisce un metodo per la manipolazione e il confronto delle stringhe.
FileSystemUtils - Fornisce un metodo per ottenere lo spazio libero su un'unità disco.
LineIterator - Fornisce un modo flessibile per lavorare con un file basato su riga.
Filtra classi
Le classi di filtro che si trovano nel pacchetto org.apache.commons.io.filefilter, forniscono metodi per filtrare i file in base a criteri logici invece di noiosi confronti basati su stringhe. Di seguito sono riportati alcuni esempi.
NameFileFilter - Filtra i nomi dei file per un nome.
WildcardFileFilter - Filtra i file utilizzando i caratteri jolly forniti.
SuffixFileFilter- Filtra i file in base al suffisso. Viene utilizzato per recuperare tutti i file di un tipo particolare.
PrefixFileFilter - Filtra i file in base al prefisso.
OrFileFilter- Fornisce logica OR condizionale in un elenco di filtri di file. Restituisce vero, se qualche filtro nell'elenco restituisce vero. In caso contrario, restituisce false.
AndFileFilter- Fornisce condizionale e logica in un elenco di filtri di file. Restituisce false se qualsiasi filtro nell'elenco restituisce false. In caso contrario, restituisce true.
Classi di File Monitor
Classi di file monitor che si trovano sotto org.apache.commons.io.monitorpacchetto, fornisce il controllo per tenere traccia delle modifiche in un file o una cartella specifici e consente di eseguire azioni di conseguenza sulle modifiche. Di seguito sono riportati alcuni esempi.
FileEntry- Fornisce lo stato di un file o di una directory. Attributi di file in un determinato momento.
FileAlterationObserver - Rappresenta lo stato dei file sotto una directory principale, controlla il file system e notifica ai listener gli eventi di creazione, modifica o eliminazione.
FileAlterationMonitor - Rappresenta un thread che genera un thread di monitoraggio che attiva qualsiasi FileAlterationObserver registrato a un intervallo specificato.
Classi di confronto
Classi di monitoraggio file in org.apache.commons.io.comparator pacchetto permette di confrontare e ordinare facilmente file e directory.
NameFileComparator - Confronta i nomi di due file.
SizeFileComparator - Confronta le dimensioni di due file.
LastModifiedFileComparator - Confronta le ultime date di modifica di due file.
Corsi in streaming
Esistono più implementazioni di InputStream nel pacchetto org.apache.commons.io.input e di OutputStream nel pacchetto org.apache.commons.io.output, per eseguire attività utili sui flussi. Di seguito sono riportati alcuni esempi.
NullOutputStream - Assorbe tutti i dati inviati con qualsiasi errore.
TeeOutputStream - Invia l'output a due flussi.
ByteArrayOutputStream - Versione più veloce della classe JDK.
CountingOutputStream - Conta il numero di byte passati attraverso il flusso.
ProxyOutputStream - Modifica le chiamate al flusso proxy.
LockableFileWriter - Un FileWriter per creare file di blocco e consentire una semplice gestione del blocco dei file di thread incrociati.
In questo capitolo apprenderemo la configurazione dell'ambiente locale di Apache Commons IO e come impostare il percorso di Commons IO per Windows 2000 / XP, Windows 95/98 / ME ecc. Comprenderemo anche alcuni popolari editor java e come scaricare l'archivio Commons IO.
Configurazione dell'ambiente locale
Se sei ancora disposto a configurare il tuo ambiente per il linguaggio di programmazione Java, questa sezione ti guiderà su come scaricare e configurare Java sulla tua macchina. Seguire i passaggi indicati di seguito per configurare l'ambiente.
Java SE è disponibile gratuitamente per il download al link https://www.oracle.comQuindi scarichi una versione basata sul tuo sistema operativo.
Segui le istruzioni per scaricare Java ed eseguire il file .exeper installare Java sulla tua macchina. Dopo aver installato Java sulla macchina, sarà necessario impostare le variabili di ambiente in modo che puntino alle directory di installazione corrette.
Percorso per Windows 2000 / XP
Facci capire come impostare il percorso per Windows 2000 / XP. Supponiamo che tu abbia installato Java inc:\Program Files\java\jdk directory.
Fare clic con il pulsante destro del mouse su "Risorse del computer" e selezionare "Proprietà".
Fare clic sul pulsante "Variabili d'ambiente" nella scheda "Avanzate".
Ora, modifica la variabile "Path", in modo che contenga anche il percorso dell'eseguibile Java. Esempio, se il percorso è attualmente impostato su "C: \ WINDOWS \ SYSTEM32", modifica il percorso in lettura'C:\WINDOWS\SYSTEM32;c:\Program Files\java\jdk\bin'.
Percorso per Windows 95/98 / ME
Cerchiamo di capire come impostare il percorso per Windows 95/98 / ME. Supponiamo che tu abbia installato Java inc:\Program Files\java\jdk directory.
Modifica il file "C: \ autoexec.bat" e aggiungi la seguente riga alla fine: "SET PATH =% PATH%; C: \ Program Files \ java \ jdk \ bin"
Percorso per Linux, UNIX, Solaris, FreeBSD
La variabile d'ambiente PATH dovrebbe essere impostata in modo che punti a dove sono stati installati i binari Java. Fare riferimento alla documentazione della shell, se si hanno problemi a farlo.
Esempio, se usi bash come shell, aggiungi la seguente riga alla fine di '.bashrc: export PATH = / path / to / java: $ PATH'
Editor Java popolari
Per scrivere i tuoi programmi Java, hai bisogno di un editor di testo. Ci sono molti IDE sofisticati disponibili sul mercato. Ma per ora, puoi considerare uno dei seguenti:
Notepad - Su una macchina Windows puoi usare qualsiasi semplice editor di testo come Blocco note (consigliato per questo tutorial), TextPad.
Netbeans - È un IDE Java che è open-source e gratuito e che può essere scaricato da https://www.netbeans.org/index.html.
Eclipse - È anche un IDE Java sviluppato dalla comunità open source di eclipse e può essere scaricato da https://www.eclipse.org/.
Scarica Common IO Archive
Scarica l'ultima versione del file jar Apache Common IO da commons-io-2.6- bin.zip, che è disponibile su download_io.cgi Al momento della stesura di questo tutorial, abbiamo scaricato commons-io-2.6-bin.zip e copiato nella cartella C: \> Apache.
OS | Nome dell'archivio |
---|---|
finestre | commons-io-2.6-bin.zip |
Linux | commons-io-2.6-bin.tar.gz |
Mac | commons-io-2.6-bin.tar.gz |
Ambiente I / O comune Apache
Impostare il APACHE_HOMEvariabile di ambiente in modo che punti alla posizione della directory di base in cui è archiviato il jar di Apache sulla macchina. Supponendo, abbiamo estratto commons-io-2.6-bin.zip nella cartella Apache su vari sistemi operativi come segue.
OS | Produzione |
---|---|
finestre | Imposta la variabile d'ambiente APACHE_HOME su C: \ Apache |
Linux | esportare APACHE_HOME = / usr / local / Apache |
Mac | export APACHE_HOME = / Library / Apache |
Imposta la variabile CLASSPATH
Impostare il CLASSPATHvariabile di ambiente in modo che punti alla posizione del jar IO comune. Supponendo che abbiate memorizzato commons-io-2.6-bin.zip nella cartella Apache su vari sistemi operativi come segue.
OS | Produzione |
---|---|
finestre | Imposta la variabile d'ambiente CLASSPATH su% 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 fornisce metodi di utilità per leggere, scrivere e copiare file. I metodi funzionano con InputStream, OutputStream, Reader e Writer.
Dichiarazione di classe
Di seguito è riportata la dichiarazione per org.apache.commons.io.IOUtils Classe -
public class IOUtils
extends Object
Caratteristiche di IOUtils
Le caratteristiche di IOUtils sono fornite di seguito:
Fornisce metodi di utilità statici per operazioni di input / output.
toXXX () - legge i dati da un flusso.
write () - scrive i dati in un flusso.
copy () - copia tutti i dati in un flusso in un altro flusso.
contentEquals: confronta i contenuti di due stream.
Esempio di classe IOUtils
Ecco il file di input che dobbiamo analizzare:
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") );
}
}
}
Produzione
Stamperà il seguente risultato:
Welcome to TutorialsPoint. Simply Easy Learning.
Welcome to TutorialsPoint. Simply Easy Learning.
FileUtils fornisce un metodo per manipolare i file come lo spostamento, l'apertura, il controllo dell'esistenza, la lettura del file, ecc. Questi metodi utilizzano File Object.
Dichiarazione di classe
Di seguito è riportata la dichiarazione per org.apache.commons.io.FileUtils Class -
public class FileUtils
extends Object
Caratteristiche di FileUtils
Le caratteristiche di FileUtils sono indicate di seguito:
Metodi per scrivere su un file.
Metodi per leggere da un file.
Metodi per creare una directory che includa le directory principali.
Metodi per copiare file e directory.
Metodi per eliminare file e directory.
Metodi per convertire in e da un URL.
Metodi per elencare file e directory per filtro ed estensione.
Metodi per confrontare il contenuto del file.
Metodi per archiviare la data dell'ultima modifica.
Metodi per calcolare un checksum.
Esempio di classe FileUtils
Ecco il file di input che dobbiamo analizzare:
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);
}
}
Produzione
L'output è menzionato di seguito:
Temp
Welcome to TutorialsPoint. Simply Easy Learning.
FilenameUtils fornisce un metodo per lavorare con i nomi di file senza utilizzare File Object. Funziona su diversi sistemi operativi in modo simile. Questa classe risolve i problemi quando si passa da una macchina di sviluppo basata su Windows a una macchina di produzione basata su Unix.
Dichiarazione di classe
Di seguito è riportata la dichiarazione per org.apache.commons.io.FilenameUtils Classe -
public class FilenameUtils
extends Object
Caratteristiche di FileNameUtils
Questa classe definisce sei componenti all'interno di un nome di file. Considera una posizione di esempio comeC:\dev\project\file.txt. Quindi, i componenti sono i seguenti:
Prefisso - C: \
Percorso relativo - dev \ project \
Percorso assoluto - C: \ dev \ project \
Nome: file.txt
Nome di base - file
Estensione - txt
Per identificare una directory, aggiungi un separatore al nome del file.
Esempio di classe FilenameUtils
L'esempio di FilenameUtils Class è fornito di seguito:
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));
}
}
Produzione
L'output è fornito di seguito:
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 fornisce il metodo per ottenere lo spazio libero su un'unità disco.
Dichiarazione di classe
Di seguito è riportata la dichiarazione per org.apache.commons.io.FileSystemUtils Classe -
public class FileSystemUtils
extends Object
Esempio di classe FileSystemUtils
Di seguito è riportato l'esempio della classe FileSystemUtils:
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());
}
}
}
Produzione
Di seguito è riportato l'output:
Free Space 61355640 kb
Enumerazione della distinzione tra maiuscole e minuscole IO. Sistemi operativi diversi hanno regole diverse per la distinzione tra maiuscole e minuscole per i nomi dei file. Ad esempio, Windows non fa distinzione tra maiuscole e minuscole per la denominazione dei file mentre Unix distingue tra maiuscole e minuscole. IOCase cattura quella differenza, fornisce un'enumerazione per controllare come devono essere eseguiti i confronti dei nomi dei file. Fornisce inoltre metodi per utilizzare l'enumerazione per eseguire confronti.
Dichiarazione Enum
Di seguito è riportata la dichiarazione per org.apache.commons.io.IOCase Enum -
public enum IOCase
extends Enum<IOCase> implements Serializable
Esempio di IOCase Enum
Di seguito viene fornito un esempio di IOCase Enum:
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));
}
}
Produzione
Stamperà il seguente risultato:
Ends with Learning (case sensitive): false
Ends with Learning (case insensitive): true
Equality Check (case sensitive): false
Equality Check (case insensitive): true
LineIterator fornisce un modo flessibile per lavorare con un file basato su riga. Impariamo lo stesso in questo capitolo.
Dichiarazione di classe
Di seguito è riportata la dichiarazione per org.apache.commons.io.LineIterator Classe -
public class LineIterator
extends Object implements Iterator<String>, Closeable
Esempio di LineIterator Class
Ecco il file di input che dobbiamo analizzare:
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());
}
}
}
}
Produzione
Stamperà il seguente risultato:
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 filtra i nomi dei file per un nome.
Dichiarazione di classe
Di seguito è riportata la dichiarazione per org.apache.commons.io.filefilter.NameFileFilter Classe :
public class NameFileFilter
extends AbstractFileFilter implements Serializable
Esempio di classe NameFileFilter
Ecco il file di input che dobbiamo analizzare:
Welcome to TutorialsPoint. Simply Easy Learning.
Stampiamo tutti i file e le directory nella directory corrente e quindi filtriamo un file il cui nome è 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]);
}
}
}
Produzione
Stamperà il seguente risultato:
All files and Folders.
.classpath
.project
.settings
bin
input.txt
src
File with name input.txt
input.txt
WildcardFileFilter in Commons IO filtra i file utilizzando i caratteri jolly forniti.
Dichiarazione di classe
Di seguito è riportata la dichiarazione per org.apache.commons.io.filefilter.WildcardFileFilter Classe -
public class WildcardFileFilter
extends AbstractFileFilter implements Serializable
Esempio di classe WildcardFileFilter
Ecco il file di input che dobbiamo analizzare
Welcome to TutorialsPoint. Simply Easy Learning.
Stampiamo tutti i file e le directory nella directory corrente e quindi filtriamo un file il cui nome termina con 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]);
}
}
}
Produzione
Stamperà il seguente risultato.
All files and Folders.
.classpath
.project
.settings
bin
input.txt
src
File name ending with t
.project
input.txt
SuffixFileFilter filtra i file basati sul suffisso. Viene utilizzato per recuperare tutti i file di un tipo particolare.
Dichiarazione di classe
Di seguito è riportata la dichiarazione per org.apache.commons.io.filefilter.SuffixFileFilter Classe -
public class SuffixFileFilter
extends AbstractFileFilter implements Serializable
Esempio di classe SuffixFileFilter
Ecco il file di input che dobbiamo analizzare:
Welcome to TutorialsPoint. Simply Easy Learning.
Stampiamo tutti i file e le directory nella directory corrente e quindi filtriamo un file con estensione 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]);
}
}
}
Produzione
Stamperà il seguente risultato.
All files and Folders.
.classpath
.project
.settings
bin
input.txt
src
File with extenstion txt
input.txt
PrefixFileFilter filtra i file basati sul prefisso.
Dichiarazione di classe
Di seguito è riportata la dichiarazione per org.apache.commons.io.filefilter.PrefixFileFilter Classe -
public class PrefixFileFilter
extends AbstractFileFilter implements Serializable
Esempio di classe PrefixFileFilter
Ecco il file di input che dobbiamo analizzare:
Welcome to TutorialsPoint. Simply Easy Learning.
Stampiamo tutti i file e le directory nella directory corrente e quindi filtriamo un file il cui nome inizia con input.
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]);
}
}
}
Produzione
Stamperà il seguente risultato:
All files and Folders.
.classpath
.project
.settings
bin
input.txt
src
File with extenstion txt
input.txt
OrFileFilter fornisce logica OR condizionale in un elenco di filtri di file. Restituisce true, se qualsiasi filtro nell'elenco restituisce true. In caso contrario, restituisce false.
Dichiarazione di classe
Di seguito è riportata la dichiarazione per org.apache.commons.io.filefilter.OrFileFilter Classe -
public class OrFileFilter
extends AbstractFileFilter implements ConditionalFileFilter, Serializable
Esempio di classe OrFileFilter
Ecco il file di input che dobbiamo analizzare:
Welcome to TutorialsPoint. Simply Easy Learning.
Stampiamo tutti i file e le directory nella directory corrente e quindi filtriamo un file il cui nome inizia con. o termina con 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]);
}
}
}
Produzione
Stamperà il seguente risultato.
All files and Folders.
.classpath
.project
.settings
bin
input.txt
src
File starting with . or ends with t
.classpath
.project
.settings
input.txt
AndFileFilter fornisce condizionale e logica in un elenco di filtri di file. Restituisce true, se tutti i filtri nell'elenco restituiscono true. In caso contrario, restituisce false.
Dichiarazione di classe
Di seguito è riportata la dichiarazione per org.apache.commons.io.filefilter.AndFileFilter Classe -
public class AndFileFilter
extends AbstractFileFilter implements ConditionalFileFilter, Serializable
Esempio di AndFileFilter Class
Ecco il file di input che dobbiamo analizzare:
Welcome to TutorialsPoint. Simply Easy Learning.
Stampiamo tutti i file e le directory nella directory corrente e quindi filtriamo un file il cui nome inizia con. e termina con 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]);
}
}
}
Produzione
Stamperà il seguente risultato.
All files and Folders.
.classpath
.project
.settings
bin
input.txt
src
File starting with . or ends with t
.project
FileEntry fornisce lo stato di un file o di una directory. Attributi di file in un determinato momento.
Dichiarazione di classe
Di seguito è riportata la dichiarazione per org.apache.commons.io.monitor.FileEntry Classe -
public class FileEntry
extends Object implements Serializable
Caratteristiche di FileEntry
L'oggetto classe FileEntry fornisce i seguenti attributi di file in un determinato momento.
getName () - nome del file.
esiste () - controlla se il file esiste o meno.
isDirectory () - controlla se file è una directory.
lastModified () - fornisce l'ora della data dell'ultima modifica.
listFiles () - fornisce il contenuto della directory.
Esempio di classe FileEntry
Ecco il file di input che dobbiamo analizzare:
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());
}
}
Produzione
Stamperà il seguente risultato.
Monitored File: input.txt
File name: input.txt
Is Directory: false
FileAlterationObserver rappresenta lo stato dei file sotto una directory root, controlla il filesystem e notifica ai listener gli eventi di creazione, modifica o eliminazione.
Dichiarazione di classe
Di seguito è riportata la dichiarazione per
org.apache.commons.io.monitor.FileAlterationObserver Classe -
public class FileAlterationObserver
extends Object implements Serializable
Esempio di classe FileAlterationObserver
Ecco il file di input che dobbiamo analizzare:
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());
}
}
}
Produzione
Stamperà il seguente risultato.
Folder created: test
File created: test1
Folder deleted: test
File deleted: test1
FileAlterationMonitor rappresenta un thread che genera un thread di monitoraggio che attiva qualsiasi FileAlterationObserver registrato a un intervallo specificato.
Dichiarazione di classe
Di seguito è riportata la dichiarazione per org.apache.commons.io.monitor.FileAlterationMonitor Class -
public final class FileAlterationMonitor
extends Object implements Runnable
Esempio di classe FileAlterationMonitor
Ecco il file di input che dobbiamo analizzare:
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());
}
}
}
Produzione
Stamperà il seguente risultato.
Folder created: test
File created: test1
Folder deleted: test
File deleted: test1
NameFileComparator confronta i nomi di due file. Può essere utilizzato per ordinare gli elenchi o gli array di file, utilizzando il loro nome, in modo che sia case-sensitive, case-insensitive o dipendenti dal sistema.
Dichiarazione di classe
Di seguito è riportata la dichiarazione per
org.apache.commons.io.comparator.NameFileComparator Classe -
public class NameFileComparator
extends Object implements Serializable
Esempio di classe NameFileComparator
Ecco il file di input che dobbiamo analizzare:
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());
}
}
}
Produzione
Stamperà il seguente risultato.
Sorted By Name:
.classpath
.project
input.txt
SizeFileComparator confronta le dimensioni di due file / directory. Può essere utilizzato per ordinare gli elenchi o gli array di file utilizzando la loro dimensione o directory, in base al numero di figli.
Dichiarazione di classe
Di seguito è riportata la dichiarazione per
org.apache.commons.io.comparator.SizeFileComparator Classe -
public class SizeFileComparator
extends Object implements Serializable
Esempio di classe SizeFileComparator
Ecco il file di input che dobbiamo analizzare:
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());
}
}
}
Produzione
Stamperà il seguente risultato.
Sorted By Size:
input.txt, size:124
.project, size:382
.classpath, size:441
LastModifiedFileComparator confronta le date dell'ultima modifica di due file / directory. Può essere utilizzato per ordinare gli elenchi o gli array di file / directory utilizzando le date dell'ultima modifica.
Dichiarazione di classe
Di seguito è riportata la dichiarazione per org.apache.commons.io.comparator.LastModifiedFileComparator Classe -
public class LastModifiedFileComparator
extends Object implements Serializable
Esempio di classe LastModifiedFileComparator
Ecco il file di input che dobbiamo analizzare:
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()));
}
}
}
Produzione
Stamperà il seguente risultato.
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
È un proxy InputStream che scrive in modo trasparente una copia di tutti i byte che vengono letti dal flusso proxy su un determinato OutputStream. Il flusso di input del proxy viene chiuso quando viene chiamato il metodo close () su questo proxy. Può essere utilizzato per gestire due flussi contemporaneamente.
Dichiarazione di classe
Di seguito è riportata la dichiarazione per org.apache.commons.io.input.TeeInputStream Classe -
public class TeeInputStream
extends ProxyInputStream
Esempio di classe TeeInputStream
In questo esempio, la chiusura di un TeeInputStream chiude gli oggetti TeeInputStream e TeeOutputStream.
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());
}
}
}
}
Produzione
Stamperà il seguente risultato.
Output stream 1: Welcome to TutorialsPoint. Simply Easy Learning.
Output stream 2: Welcome to TutorialsPoint. Simply Easy Learning.
TeeOutputStream divide OutputStream. Prende il nome dal comando unix 'tee'. Consente a un flusso di essere ramificato in due flussi.
Dichiarazione di classe
Di seguito è riportata la dichiarazione per org.apache.commons.io.output.TeeOutputStream Classe -
public class TeeOutputStream
extends ProxyOutputStream
Esempio di classe TeeOutputStream
In questo esempio, TeeOutputStream accetta due flussi di output come parametro e passando i dati a TeeOutputStream imposta i dati su entrambi i flussi di output.
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());
}
}
}
}
Produzione
Stamperà il seguente risultato.
Output stream 1: Welcome to TutorialsPoint. Simply Easy Learning.
Output stream 2: Welcome to TutorialsPoint. Simply Easy Learning.