Apache Commons IO - Guide rapide
La bibliothèque Apache Commons IO fournit diverses classes d'utilitaires pour les opérations courantes pour File IO couvrant un large éventail de cas d'utilisation. Cela permet d'éviter d'écrire du code standard.
La bibliothèque Apache Commons IO fournit des classes pour les catégories suivantes -
Classes d'utilité
Ces classes qui sont sous org.apache.commons.iopackage, fournit une comparaison de fichiers et de chaînes. Voici quelques exemples.
IOUtils- Fournit des méthodes utilitaires pour lire, écrire et copier des fichiers. Les méthodes fonctionnent avec InputStream, OutputStream, Reader et Writer.
FilenameUtils- Fournit une méthode pour travailler avec les noms de fichiers sans utiliser l'objet de fichier. Il fonctionne sur différents systèmes d'exploitation de la même manière.
FileUtils - Fournit une méthode pour manipuler des fichiers comme le déplacement, l'ouverture, la vérification de l'existence, la lecture de fichier, etc. Ces méthodes utilisent File Object.
IOCase - Fournit une méthode de manipulation et de comparaison de chaînes.
FileSystemUtils - Fournit une méthode pour obtenir l'espace libre sur un lecteur de disque.
LineIterator - Fournit une manière flexible de travailler avec un fichier basé sur des lignes.
Filtrer les classes
Les classes de filtre qui se trouvent sous le package org.apache.commons.io.filefilter, fournissent des méthodes pour filtrer les fichiers en fonction de critères logiques au lieu de comparaisons fastidieuses basées sur des chaînes. Voici quelques exemples.
NameFileFilter - Filtre les noms de fichiers pour un nom.
WildcardFileFilter - Filtre les fichiers à l'aide des caractères génériques fournis.
SuffixFileFilter- Filtre les fichiers en fonction du suffixe. Ceci est utilisé pour récupérer tous les fichiers d'un type particulier.
PrefixFileFilter - Filtre les fichiers en fonction du préfixe.
OrFileFilter- Fournit une logique OR conditionnelle sur une liste de filtres de fichiers. Renvoie true, si l'un des filtres de la liste renvoie true. Sinon, il renvoie false.
AndFileFilter- Fournit des conditions et une logique dans une liste de filtres de fichiers. Renvoie false si l'un des filtres de la liste renvoie false. Sinon, il renvoie vrai.
Classes du moniteur de fichiers
Classes de surveillance de fichiers sous org.apache.commons.io.monitorpackage, fournit le contrôle pour suivre les modifications dans un fichier ou un dossier spécifique et permet d'agir en conséquence sur les modifications. Voici quelques exemples.
FileEntry- Fournit l'état d'un fichier ou d'un répertoire. Attributs de fichier à un moment donné.
FileAlterationObserver - Représente l'état des fichiers sous un répertoire racine, vérifie le système de fichiers et informe les écouteurs des événements de création, de modification ou de suppression.
FileAlterationMonitor - Représente un thread qui génère un thread de surveillance déclenchant tout FileAlterationObserver enregistré à un intervalle spécifié.
Classes de comparaison
Classes de moniteur de fichiers sous org.apache.commons.io.comparator package permet de comparer et de trier facilement les fichiers et répertoires.
NameFileComparator - Comparez les noms de deux fichiers.
SizeFileComparator - Comparez la taille de deux fichiers.
LastModifiedFileComparator - Comparez les dernières dates de modification de deux fichiers.
Classes de flux
Il existe plusieurs implémentations d'InputStream sous le package org.apache.commons.io.input et de OutputStream sous le package org.apache.commons.io.output, pour effectuer des tâches utiles sur les flux. Voici quelques exemples.
NullOutputStream - Absorbe toutes les données envoyées avec n'importe quelle erreur.
TeeOutputStream - Envoie la sortie à deux flux.
ByteArrayOutputStream - Version plus rapide de la classe JDK.
CountingOutputStream - Compte le nombre d'octets passés dans le flux.
ProxyOutputStream - Modifie les appels au flux proxy.
LockableFileWriter - Un FileWriter pour créer des fichiers de verrouillage et permettre une gestion simple du verrouillage des fichiers de thread croisé.
Dans ce chapitre, nous découvrirons la configuration de l'environnement local d'Apache Commons IO et comment configurer le chemin de Commons IO pour Windows 2000 / XP, Windows 95/98 / ME etc. Nous comprendrons également certains éditeurs Java populaires et comment télécharger l'archive Commons IO.
Configuration de l'environnement local
Si vous souhaitez toujours configurer votre environnement pour le langage de programmation Java, cette section vous guidera sur la façon de télécharger et de configurer Java sur votre machine. Veuillez suivre les étapes mentionnées ci-dessous pour configurer l'environnement.
Java SE est disponible gratuitement au téléchargement sur le lien https://www.oracle.comVous téléchargez donc une version basée sur votre système d'exploitation.
Suivez les instructions pour télécharger Java et exécuter le .exepour installer Java sur votre machine. Une fois que vous avez installé Java sur votre machine, vous devez définir des variables d'environnement pour qu'elles pointent vers les répertoires d'installation corrects.
Chemin pour Windows 2000 / XP
Laissez-nous comprendre, comment configurer le chemin pour Windows 2000 / XP. Nous supposons que vous avez installé Java dansc:\Program Files\java\jdk annuaire.
Cliquez avec le bouton droit sur «Poste de travail» et sélectionnez «Propriétés».
Cliquez sur le bouton «Variables d'environnement» sous l'onglet «Avancé».
Maintenant, modifiez la variable 'Path', de sorte qu'elle contienne également le chemin vers l'exécutable Java. Exemple, si le chemin est actuellement défini sur 'C: \ WINDOWS \ SYSTEM32', modifiez votre chemin pour lire'C:\WINDOWS\SYSTEM32;c:\Program Files\java\jdk\bin'.
Chemin d'accès pour Windows 95/98 / ME
Laissez-nous comprendre, comment configurer le chemin pour Windows 95/98 / ME. Nous supposons que vous avez installé Java dansc:\Program Files\java\jdk annuaire.
Modifiez le fichier 'C: \ autoexec.bat' et ajoutez la ligne suivante à la fin - 'SET PATH =% PATH%; C: \ Program Files \ java \ jdk \ bin'
Chemin pour Linux, UNIX, Solaris, FreeBSD
La variable d'environnement PATH doit être définie pour pointer vers l'emplacement où les binaires Java ont été installés. Reportez-vous à la documentation de votre shell, si vous rencontrez des problèmes.
Exemple, si vous utilisez bash comme shell, vous ajouteriez la ligne suivante à la fin de votre '.bashrc: export PATH = / path / to / java: $ PATH'
Éditeurs Java populaires
Pour écrire vos programmes Java, vous avez besoin d'un éditeur de texte. Il existe de nombreux IDE sophistiqués disponibles sur le marché. Mais pour l'instant, vous pouvez envisager l'un des éléments suivants -
Notepad - Sur la machine Windows, vous pouvez utiliser n'importe quel éditeur de texte simple comme Notepad (recommandé pour ce tutoriel), TextPad.
Netbeans - C'est un IDE Java open-source et gratuit qui peut être téléchargé depuis https://www.netbeans.org/index.html.
Eclipse - C'est aussi un IDE Java développé par la communauté open source eclipse et peut être téléchargé depuis https://www.eclipse.org/.
Télécharger Common IO Archive
Téléchargez la dernière version du fichier jar Apache Common IO à partir de commons-io-2.6- bin.zip, qui est disponible sur download_io.cgi Au moment de la rédaction de ce didacticiel, nous avons téléchargé commons-io-2.6-bin.zip et copié dans le dossier C: \> Apache.
OS | Nom de l'archive |
---|---|
les fenêtres | commons-io-2.6-bin.zip |
Linux | commons-io-2.6-bin.tar.gz |
Mac | commons-io-2.6-bin.tar.gz |
Environnement commun d'E / S Apache
Met le APACHE_HOMEvariable d'environnement pour pointer vers l'emplacement du répertoire de base où le fichier jar Apache est stocké sur votre machine. En supposant que nous avons extrait commons-io-2.6-bin.zip dans le dossier Apache sur divers systèmes d'exploitation comme suit.
OS | Production |
---|---|
les fenêtres | Définissez la variable d'environnement APACHE_HOME sur C: \ Apache |
Linux | export APACHE_HOME = / usr / local / Apache |
Mac | export APACHE_HOME = / Bibliothèque / Apache |
Définir la variable CLASSPATH
Met le CLASSPATHvariable d'environnement pour pointer vers l'emplacement du fichier jar Common IO. En supposant que vous ayez stocké commons-io-2.6-bin.zip dans le dossier Apache sur différents systèmes d'exploitation comme suit.
OS | Production |
---|---|
les fenêtres | Définissez la variable d'environnement CLASSPATH sur% 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 fournit des méthodes utilitaires pour lire, écrire et copier des fichiers. Les méthodes fonctionnent avec InputStream, OutputStream, Reader et Writer.
Déclaration de classe
Voici la déclaration pour org.apache.commons.io.IOUtils Classe -
public class IOUtils
extends Object
Caractéristiques des IOUtils
Les caractéristiques de IOUtils sont données ci-dessous -
Fournit des méthodes utilitaires statiques pour les opérations d'entrée / sortie.
toXXX () - lit les données d'un flux.
write () - écrit des données dans un flux.
copy () - copie toutes les données d'un flux vers un autre flux.
contentEquals - compare le contenu de deux flux.
Exemple de classe IOUtils
Voici le fichier d'entrée que nous devons analyser -
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") );
}
}
}
Production
Il imprimera le résultat suivant -
Welcome to TutorialsPoint. Simply Easy Learning.
Welcome to TutorialsPoint. Simply Easy Learning.
FileUtils fournit une méthode pour manipuler des fichiers comme le déplacement, l'ouverture, la vérification de l'existence, la lecture d'un fichier, etc. Ces méthodes utilisent File Object.
Déclaration de classe
Voici la déclaration de la classe org.apache.commons.io.FileUtils -
public class FileUtils
extends Object
Caractéristiques de FileUtils
Les fonctionnalités de FileUtils sont indiquées ci-dessous -
Méthodes pour écrire dans un fichier.
Méthodes pour lire à partir d'un fichier.
Méthodes pour créer un répertoire comprenant des répertoires parents.
Méthodes pour copier des fichiers et des répertoires.
Méthodes pour supprimer des fichiers et des répertoires.
Méthodes de conversion vers et depuis une URL.
Méthodes pour lister les fichiers et répertoires par filtre et extension.
Méthodes pour comparer le contenu des fichiers.
Méthodes pour classer la date du dernier changement.
Méthodes de calcul d'une somme de contrôle.
Exemple de classe FileUtils
Voici le fichier d'entrée que nous devons analyser -
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);
}
}
Production
La sortie est mentionnée ci-dessous -
Temp
Welcome to TutorialsPoint. Simply Easy Learning.
FilenameUtils fournit une méthode pour travailler avec les noms de fichiers sans utiliser l'objet de fichier. Il fonctionne sur différents systèmes d'exploitation de la même manière. Cette classe résout les problèmes lors du passage d'une machine de développement Windows à une machine de production Unix.
Déclaration de classe
Voici la déclaration pour org.apache.commons.io.FilenameUtils Classe -
public class FilenameUtils
extends Object
Caractéristiques de FileNameUtils
Cette classe définit six composants dans un nom de fichier. Prenons un exemple d'emplacement commeC:\dev\project\file.txt. Ensuite, les composants sont les suivants:
Préfixe - C: \
Chemin relatif - dev \ project \
Chemin absolu - C: \ dev \ project \
Nom - file.txt
Nom de base - fichier
Extension - txt
Pour identifier un répertoire, ajoutez un séparateur au nom de fichier.
Exemple de classe FilenameUtils
L'exemple de la classe FilenameUtils est donné ci-dessous -
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));
}
}
Production
La sortie est donnée ci-dessous -
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 fournit une méthode pour obtenir l'espace libre sur un lecteur de disque.
Déclaration de classe
Voici la déclaration pour org.apache.commons.io.FileSystemUtils Classe -
public class FileSystemUtils
extends Object
Exemple de classe FileSystemUtils
Ci-dessous, l'exemple de la 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());
}
}
}
Production
Ci-dessous est la sortie -
Free Space 61355640 kb
Énumération de la sensibilité à la casse d'E / S. Différents systèmes d'exploitation ont des règles différentes pour le respect de la casse pour les noms de fichiers. Par exemple, Windows est insensible à la casse pour la dénomination des fichiers tandis qu'Unix est sensible à la casse. IOCase capture cette différence et fournit une énumération pour contrôler la manière dont les comparaisons de noms de fichiers doivent être effectuées. Il fournit également des méthodes pour utiliser l'énumération pour effectuer des comparaisons.
Déclaration d'énumération
Voici la déclaration pour org.apache.commons.io.IOCase Enum -
public enum IOCase
extends Enum<IOCase> implements Serializable
Exemple de IOCase Enum
Un exemple d'IOCase Enum est donné ci-dessous -
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));
}
}
Production
Il imprimera le résultat suivant -
Ends with Learning (case sensitive): false
Ends with Learning (case insensitive): true
Equality Check (case sensitive): false
Equality Check (case insensitive): true
LineIterator fournit une manière flexible de travailler avec un fichier basé sur des lignes. Apprenons la même chose dans ce chapitre.
Déclaration de classe
Voici la déclaration pour org.apache.commons.io.LineIterator Classe -
public class LineIterator
extends Object implements Iterator<String>, Closeable
Exemple de classe LineIterator
Voici le fichier d'entrée que nous devons analyser -
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());
}
}
}
}
Production
Il imprimera le résultat suivant -
Contents of input.txt
Welcome to TutorialsPoint. Simply Easy Learning.
Learn web technologies,
prepare exams,
code online,
all at one place.
NameFileFilter dans Commons IO filtre les noms de fichiers pour un nom.
Déclaration de classe
Voici la déclaration pour org.apache.commons.io.filefilter.NameFileFilter Classe:
public class NameFileFilter
extends AbstractFileFilter implements Serializable
Exemple de classe NameFileFilter
Voici le fichier d'entrée que nous devons analyser -
Welcome to TutorialsPoint. Simply Easy Learning.
Imprimons tous les fichiers et répertoires dans le répertoire courant, puis filtrons un fichier dont le nom est 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]);
}
}
}
Production
Il imprimera le résultat suivant -
All files and Folders.
.classpath
.project
.settings
bin
input.txt
src
File with name input.txt
input.txt
WildcardFileFilter dans Commons IO filtre les fichiers à l'aide des caractères génériques fournis.
Déclaration de classe
Voici la déclaration pour org.apache.commons.io.filefilter.WildcardFileFilter Classe -
public class WildcardFileFilter
extends AbstractFileFilter implements Serializable
Exemple de classe WildcardFileFilter
Voici le fichier d'entrée que nous devons analyser
Welcome to TutorialsPoint. Simply Easy Learning.
Imprimons tous les fichiers et répertoires dans le répertoire courant, puis filtrons un fichier dont le nom se termine par 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]);
}
}
}
Production
Il imprimera le résultat suivant.
All files and Folders.
.classpath
.project
.settings
bin
input.txt
src
File name ending with t
.project
input.txt
SuffixFileFilter filtre les fichiers basés sur le suffixe. Ceci est utilisé pour récupérer tous les fichiers d'un type particulier.
Déclaration de classe
Voici la déclaration pour org.apache.commons.io.filefilter.SuffixFileFilter Classe -
public class SuffixFileFilter
extends AbstractFileFilter implements Serializable
Exemple de classe SuffixFileFilter
Voici le fichier d'entrée que nous devons analyser -
Welcome to TutorialsPoint. Simply Easy Learning.
Imprimons tous les fichiers et répertoires dans le répertoire actuel, puis filtrons un fichier avec l'extension 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]);
}
}
}
Production
Il imprimera le résultat suivant.
All files and Folders.
.classpath
.project
.settings
bin
input.txt
src
File with extenstion txt
input.txt
PrefixFileFilter filtre les fichiers basés sur le préfixe.
Déclaration de classe
Voici la déclaration pour org.apache.commons.io.filefilter.PrefixFileFilter Classe -
public class PrefixFileFilter
extends AbstractFileFilter implements Serializable
Exemple de classe PrefixFileFilter
Voici le fichier d'entrée que nous devons analyser -
Welcome to TutorialsPoint. Simply Easy Learning.
Imprimons tous les fichiers et répertoires du répertoire actuel, puis filtrons un fichier dont le nom commence par 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]);
}
}
}
Production
Il imprimera le résultat suivant -
All files and Folders.
.classpath
.project
.settings
bin
input.txt
src
File with extenstion txt
input.txt
OrFileFilter fournit une logique OR conditionnelle sur une liste de filtres de fichiers. Il renvoie true, si l'un des filtres de la liste renvoie true. Sinon, il renvoie false.
Déclaration de classe
Voici la déclaration pour org.apache.commons.io.filefilter.OrFileFilter Classe -
public class OrFileFilter
extends AbstractFileFilter implements ConditionalFileFilter, Serializable
Exemple de classe OrFileFilter
Voici le fichier d'entrée que nous devons analyser -
Welcome to TutorialsPoint. Simply Easy Learning.
Imprimons tous les fichiers et répertoires du répertoire courant, puis filtrons un fichier dont le nom commence par. ou se termine par 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]);
}
}
}
Production
Il imprimera le résultat suivant.
All files and Folders.
.classpath
.project
.settings
bin
input.txt
src
File starting with . or ends with t
.classpath
.project
.settings
input.txt
AndFileFilter fournit des conditions et une logique dans une liste de filtres de fichiers. Il renvoie true si tous les filtres de la liste retournent true. Sinon, il renvoie false.
Déclaration de classe
Voici la déclaration pour org.apache.commons.io.filefilter.AndFileFilter Classe -
public class AndFileFilter
extends AbstractFileFilter implements ConditionalFileFilter, Serializable
Exemple de classe AndFileFilter
Voici le fichier d'entrée que nous devons analyser -
Welcome to TutorialsPoint. Simply Easy Learning.
Imprimons tous les fichiers et répertoires du répertoire courant, puis filtrons un fichier dont le nom commence par. et se termine par 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]);
}
}
}
Production
Il imprimera le résultat suivant.
All files and Folders.
.classpath
.project
.settings
bin
input.txt
src
File starting with . or ends with t
.project
FileEntry fournit l'état d'un fichier ou d'un répertoire. Attributs de fichier à un moment donné.
Déclaration de classe
Voici la déclaration pour org.apache.commons.io.monitor.FileEntry Classe -
public class FileEntry
extends Object implements Serializable
Caractéristiques de FileEntry
L'objet de classe FileEntry fournit les attributs de fichier suivants à un moment donné.
getName () - nom de fichier.
existe () - vérifie si le fichier existe ou non.
isDirectory () - vérifie si le fichier est un répertoire.
lastModified () - donne l'heure de la dernière date modifiée.
listFiles () - donne le contenu du répertoire.
Exemple de classe FileEntry
Voici le fichier d'entrée que nous devons analyser -
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());
}
}
Production
Il imprimera le résultat suivant.
Monitored File: input.txt
File name: input.txt
Is Directory: false
FileAlterationObserver représente l'état des fichiers sous un répertoire racine, vérifie le système de fichiers et informe les écouteurs des événements de création, de modification ou de suppression.
Déclaration de classe
Voici la déclaration pour
org.apache.commons.io.monitor.FileAlterationObserver Classe -
public class FileAlterationObserver
extends Object implements Serializable
Exemple de classe FileAlterationObserver
Voici le fichier d'entrée que nous devons analyser -
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());
}
}
}
Production
Il imprimera le résultat suivant.
Folder created: test
File created: test1
Folder deleted: test
File deleted: test1
FileAlterationMonitor représente un thread qui génère un thread de surveillance déclenchant tout FileAlterationObserver enregistré à un intervalle spécifié.
Déclaration de classe
Voici la déclaration de la classe org.apache.commons.io.monitor.FileAlterationMonitor -
public final class FileAlterationMonitor
extends Object implements Runnable
Exemple de classe FileAlterationMonitor
Voici le fichier d'entrée que nous devons analyser -
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());
}
}
}
Production
Il imprimera le résultat suivant.
Folder created: test
File created: test1
Folder deleted: test
File deleted: test1
NameFileComparator compare les noms de deux fichiers. Il peut être utilisé pour trier les listes ou les tableaux de fichiers, en utilisant leur nom, de manière sensible à la casse, à la casse ou à la casse dépendante du système.
Déclaration de classe
Voici la déclaration pour
org.apache.commons.io.comparator.NameFileComparator Classe -
public class NameFileComparator
extends Object implements Serializable
Exemple de classe NameFileComparator
Voici le fichier d'entrée que nous devons analyser -
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());
}
}
}
Production
Il imprimera le résultat suivant.
Sorted By Name:
.classpath
.project
input.txt
SizeFileComparator compare les tailles de deux fichiers / répertoire. Il peut être utilisé pour trier les listes ou tableaux de fichiers en fonction de leur taille ou de leurs répertoires, en fonction de leur nombre d'enfants.
Déclaration de classe
Voici la déclaration pour
org.apache.commons.io.comparator.SizeFileComparator Classe -
public class SizeFileComparator
extends Object implements Serializable
Exemple de classe SizeFileComparator
Voici le fichier d'entrée que nous devons analyser -
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());
}
}
}
Production
Il imprimera le résultat suivant.
Sorted By Size:
input.txt, size:124
.project, size:382
.classpath, size:441
LastModifiedFileComparator compare les dernières dates de modification de deux fichiers / répertoire. Il peut être utilisé pour trier les listes ou les tableaux de fichiers / répertoires en utilisant leurs dernières dates modifiées.
Déclaration de classe
Voici la déclaration pour org.apache.commons.io.comparator.LastModifiedFileComparator Classe -
public class LastModifiedFileComparator
extends Object implements Serializable
Exemple de classe LastModifiedFileComparator
Voici le fichier d'entrée que nous devons analyser -
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()));
}
}
}
Production
Il imprimera le résultat suivant.
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
Il s'agit d'un proxy InputStream qui écrit de manière transparente une copie de tous les octets lus depuis le flux proxy vers un OutputStream donné. Le flux d'entrée du proxy est fermé lorsque la méthode close () sur ce proxy est appelée. Il peut être utilisé pour faire fonctionner deux flux collectivement à la fois.
Déclaration de classe
Voici la déclaration pour org.apache.commons.io.input.TeeInputStream Classe -
public class TeeInputStream
extends ProxyInputStream
Exemple de classe TeeInputStream
Dans cet exemple, la fermeture d'un TeeInputStream ferme le TeeInputStream ainsi que les objets 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());
}
}
}
}
Production
Il imprimera le résultat suivant.
Output stream 1: Welcome to TutorialsPoint. Simply Easy Learning.
Output stream 2: Welcome to TutorialsPoint. Simply Easy Learning.
TeeOutputStream divise le OutputStream. Il est nommé d'après la commande unix «tee». Il permet à un flux d'être ramifié en deux flux.
Déclaration de classe
Voici la déclaration pour org.apache.commons.io.output.TeeOutputStream Classe -
public class TeeOutputStream
extends ProxyOutputStream
Exemple de classe TeeOutputStream
Dans cet exemple, TeeOutputStream accepte deux flux de sortie en tant que paramètre et transmet les données aux données d'ensemble TeeOutputStream aux deux flux de sortie.
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());
}
}
}
}
Production
Il imprimera le résultat suivant.
Output stream 1: Welcome to TutorialsPoint. Simply Easy Learning.
Output stream 2: Welcome to TutorialsPoint. Simply Easy Learning.