Apache Commons IO - Guia rápido
A biblioteca Apache Commons IO fornece várias classes de utilitários para operações comuns para File IO, abrangendo uma ampla gama de casos de uso. Isso ajuda a evitar a escrita de código clichê.
A biblioteca Apache Commons IO fornece classes para as seguintes categorias -
Aulas de utilidades
Essas classes que estão sob org.apache.commons.iopacote, fornece comparação de arquivo e string. A seguir estão alguns dos exemplos.
IOUtils- Fornece métodos utilitários para ler, escrever e copiar arquivos. Os métodos funcionam com InputStream, OutputStream, Reader e Writer.
FilenameUtils- Fornece método para trabalhar com nomes de arquivo sem usar Objeto de Arquivo. Ele funciona em diferentes sistemas operacionais de maneira semelhante.
FileUtils - Fornece método para manipular arquivos como mover, abrir, verificar a existência, ler o arquivo, etc. Esses métodos usam Objeto de Arquivo.
IOCase - Fornece método para manipulação e comparação de strings.
FileSystemUtils - Fornece método para obter o espaço livre em uma unidade de disco.
LineIterator - Oferece uma maneira flexível de trabalhar com um arquivo baseado em linha.
Classes de filtro
As classes de filtro que estão no pacote org.apache.commons.io.filefilter, fornecem métodos para filtrar arquivos com base em critérios lógicos em vez de comparações tediosas baseadas em strings. A seguir estão alguns dos exemplos.
NameFileFilter - Filtra nomes de arquivo para um nome.
WildcardFileFilter - Filtra arquivos usando os curingas fornecidos.
SuffixFileFilter- Filtra arquivos com base no sufixo. Isso é usado para recuperar todos os arquivos de um tipo específico.
PrefixFileFilter - Filtra arquivos com base no prefixo.
OrFileFilter- Fornece lógica OR condicional em uma lista de filtros de arquivo. Retorna verdadeiro se algum filtro da lista retornar verdadeiro. Caso contrário, ele retorna falso.
AndFileFilter- Fornece condicional e lógica em uma lista de filtros de arquivo. Retorna falso se algum filtro na lista retornar falso. Caso contrário, ele retorna verdadeiro.
Classes File Monitor
Classes de monitor de arquivo que estão sob org.apache.commons.io.monitorpacote, fornece controle para rastrear alterações em um arquivo ou pasta específica e permite executar ações de acordo com as alterações. A seguir estão alguns dos exemplos.
FileEntry- Fornece o estado de um arquivo ou diretório. Atributos de arquivo em um determinado momento.
FileAlterationObserver - Representa o estado dos arquivos abaixo de um diretório raiz, verifica o sistema de arquivos e notifica os ouvintes sobre a criação, alteração ou exclusão de eventos.
FileAlterationMonitor - Representa um encadeamento que gera um encadeamento de monitoramento, disparando qualquer FileAlterationObserver registrado em um intervalo especificado.
Classes comparadoras
Classes de monitoramento de arquivos em org.apache.commons.io.comparator pacote permite comparar e classificar arquivos e diretórios facilmente.
NameFileComparator - Compare os nomes de dois arquivos.
SizeFileComparator - Compare o tamanho de dois arquivos.
LastModifiedFileComparator - Compare as datas da última modificação de dois arquivos.
Aulas de fluxo
Existem várias implementações de InputStream no pacote org.apache.commons.io.input e de OutputStream no pacote org.apache.commons.io.output, para fazer tarefas úteis em fluxos. A seguir estão alguns dos exemplos.
NullOutputStream - Absorve todos os dados enviados com algum erro.
TeeOutputStream - Envia saída para dois fluxos.
ByteArrayOutputStream - Versão mais rápida da classe JDK.
CountingOutputStream - Conta o número de bytes passados pelo fluxo.
ProxyOutputStream - Altera as chamadas para fluxo de proxy.
LockableFileWriter - Um FileWriter para criar arquivos de bloqueio e permitir manipulação de bloqueio de arquivo de thread cruzado simples.
Neste capítulo, aprenderemos sobre a configuração do ambiente local do Apache Commons IO e como configurar o caminho do Commons IO para Windows 2000 / XP, Windows 95/98 / ME etc. Também entenderemos sobre alguns editores populares de Java e como baixar o arquivo Commons IO.
Configuração de ambiente local
Se você ainda deseja configurar seu ambiente para a linguagem de programação Java, esta seção irá guiá-lo sobre como baixar e configurar o Java em sua máquina. Siga as etapas mencionadas abaixo para configurar o ambiente.
Java SE está disponível gratuitamente para download no link https://www.oracle.comEntão, você baixa uma versão baseada em seu sistema operacional.
Siga as instruções para baixar o Java e executar o .exepara instalar o Java em sua máquina. Depois de instalar o Java em sua máquina, você precisará definir as variáveis de ambiente para apontar para os diretórios de instalação corretos.
Caminho para Windows 2000 / XP
Vamos entender, como configurar o caminho para o Windows 2000 / XP. Estamos assumindo que você instalou o Java emc:\Program Files\java\jdk diretório.
Clique com o botão direito em 'Meu Computador' e selecione 'Propriedades'.
Clique no botão 'Variáveis de ambiente' na guia 'Avançado'.
Agora, altere a variável 'Path', para que também contenha o caminho para o executável Java. Por exemplo, se o caminho está atualmente definido como 'C: \ WINDOWS \ SYSTEM32', altere seu caminho para ler'C:\WINDOWS\SYSTEM32;c:\Program Files\java\jdk\bin'.
Caminho para Windows 95/98 / ME
Vamos entender, como configurar o caminho para o Windows 95/98 / ME. Estamos assumindo que você instalou o Java emc:\Program Files\java\jdk diretório.
Edite o arquivo 'C: \ autoexec.bat' e adicione a seguinte linha no final - 'SET PATH =% PATH%; C: \ Arquivos de programas \ java \ jdk \ bin'
Caminho para Linux, UNIX, Solaris, FreeBSD
A variável de ambiente PATH deve ser definida para apontar para onde os binários Java foram instalados. Consulte a documentação do shell, se tiver problemas para fazer isso.
Por exemplo, se você usar bash como seu shell, então você adicionaria a seguinte linha ao final de seu '.bashrc: export PATH = / path / to / java: $ PATH'
Editores Java populares
Para escrever seus programas Java, você precisa de um editor de texto. Existem muitos IDEs sofisticados disponíveis no mercado. Mas, por agora, você pode considerar um dos seguintes -
Notepad - Na máquina Windows você pode usar qualquer editor de texto simples como o Notepad (recomendado para este tutorial), TextPad.
Netbeans - É um IDE Java de código aberto e gratuito que pode ser baixado de https://www.netbeans.org/index.html.
Eclipse - Também é um IDE Java desenvolvido pela comunidade de código aberto eclipse e pode ser baixado de https://www.eclipse.org/.
Baixe o arquivo IO comum
Baixe a versão mais recente do arquivo jar do Apache Common IO em commons-io-2.6- bin.zip, que está disponível em download_io.cgi No momento em que este tutorial foi escrito, baixamos commons-io-2.6-bin.zip e copiamos na pasta C: \> Apache.
SO | Nome do arquivo |
---|---|
janelas | commons-io-2.6-bin.zip |
Linux | commons-io-2.6-bin.tar.gz |
Mac | commons-io-2.6-bin.tar.gz |
Ambiente IO comum Apache
Colocou o APACHE_HOMEvariável de ambiente para apontar para o local do diretório base onde o jar do Apache está armazenado em sua máquina. Supondo que extraímos commons-io-2.6-bin.zip na pasta Apache em vários sistemas operacionais como segue.
SO | Resultado |
---|---|
janelas | Defina a variável de ambiente APACHE_HOME para C: \ Apache |
Linux | export APACHE_HOME = / usr / local / Apache |
Mac | export APACHE_HOME = / Library / Apache |
Definir variável CLASSPATH
Colocou o CLASSPATHvariável de ambiente para apontar para o local do jar IO comum. Supondo que você tenha armazenado commons-io-2.6-bin.zip na pasta Apache em vários sistemas operacionais como segue.
SO | Resultado |
---|---|
janelas | Defina a variável de ambiente CLASSPATH como% 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 fornece métodos utilitários para ler, gravar e copiar arquivos. Os métodos funcionam com InputStream, OutputStream, Reader e Writer.
Declaração de Classe
A seguir está a declaração para org.apache.commons.io.IOUtils Classe -
public class IOUtils
extends Object
Características do IOUtils
Os recursos do IOUtils são fornecidos abaixo -
Fornece métodos utilitários estáticos para operações de entrada / saída.
toXXX () - lê dados de um fluxo.
write () - grava dados em um fluxo.
copy () - copia todos os dados de um fluxo para outro fluxo.
contentEquals - compare o conteúdo de dois fluxos.
Exemplo de classe IOUtils
Aqui está o arquivo de entrada que precisamos analisar -
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") );
}
}
}
Resultado
Irá imprimir o seguinte resultado -
Welcome to TutorialsPoint. Simply Easy Learning.
Welcome to TutorialsPoint. Simply Easy Learning.
FileUtils fornece um método para manipular arquivos, como mover, abrir, verificar a existência, ler o arquivo, etc. Esses métodos usam Objeto de Arquivo.
Declaração de Classe
A seguir está a declaração para a classe org.apache.commons.io.FileUtils -
public class FileUtils
extends Object
Recursos do FileUtils
Os recursos do FileUtils são declarados abaixo -
Métodos para gravar em um arquivo.
Métodos para ler de um arquivo.
Métodos para fazer um diretório incluindo diretórios pais.
Métodos para copiar arquivos e diretórios.
Métodos para excluir arquivos e diretórios.
Métodos para converter de e para um URL.
Métodos para listar arquivos e diretórios por filtro e extensão.
Métodos para comparar o conteúdo do arquivo.
Métodos para arquivar a data da última alteração.
Métodos para calcular uma soma de verificação.
Exemplo de classe FileUtils
Aqui está o arquivo de entrada que precisamos analisar -
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);
}
}
Resultado
A saída é mencionada abaixo -
Temp
Welcome to TutorialsPoint. Simply Easy Learning.
FilenameUtils fornece um método para trabalhar com nomes de arquivo sem usar o objeto Arquivo. Ele funciona em diferentes sistemas operacionais de maneira semelhante. Esta aula resolve problemas ao passar de uma máquina de desenvolvimento baseada em Windows para uma máquina de produção baseada em Unix.
Declaração de Classe
A seguir está a declaração para org.apache.commons.io.FilenameUtils Classe -
public class FilenameUtils
extends Object
Recursos de FileNameUtils
Esta classe define seis componentes em um nome de arquivo. Considere um exemplo de local comoC:\dev\project\file.txt. Então, os componentes são os seguintes:
Prefixo - C: \
Caminho relativo - dev \ project \
Caminho absoluto - C: \ dev \ project \
Nome - arquivo.txt
Nome da base - arquivo
Extensão - txt
Para identificar um diretório, adicione um separador ao nome do arquivo.
Exemplo de classe FilenameUtils
O exemplo da classe FilenameUtils é fornecido abaixo -
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));
}
}
Resultado
O resultado é dado abaixo -
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 fornece um método para obter o espaço livre em uma unidade de disco.
Declaração de Classe
A seguir está a declaração para org.apache.commons.io.FileSystemUtils Classe -
public class FileSystemUtils
extends Object
Exemplo de classe FileSystemUtils
A seguir está o exemplo da 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());
}
}
}
Resultado
A seguir está o resultado -
Free Space 61355640 kb
Enumeração da distinção entre maiúsculas e minúsculas IO. Diferentes sistemas operacionais têm diferentes regras de diferenciação de maiúsculas e minúsculas para nomes de arquivo. Por exemplo, o Windows não diferencia maiúsculas de minúsculas para a nomenclatura de arquivos, enquanto o Unix diferencia maiúsculas de minúsculas. IOCase captura essa diferença, fornece uma enumeração para controlar como as comparações de nome de arquivo devem ser realizadas. Ele também fornece métodos para usar a enumeração para realizar comparações.
Declaração Enum
A seguir está a declaração para org.apache.commons.io.IOCase Enum -
public enum IOCase
extends Enum<IOCase> implements Serializable
Exemplo de IOCase Enum
Um exemplo de IOCase Enum é fornecido abaixo -
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));
}
}
Resultado
Irá imprimir o seguinte resultado -
Ends with Learning (case sensitive): false
Ends with Learning (case insensitive): true
Equality Check (case sensitive): false
Equality Check (case insensitive): true
LineIterator fornece uma maneira flexível de trabalhar com um arquivo baseado em linha. Vamos aprender mais sobre o mesmo neste capítulo.
Declaração de Classe
A seguir está a declaração para org.apache.commons.io.LineIterator Classe -
public class LineIterator
extends Object implements Iterator<String>, Closeable
Exemplo de classe LineIterator
Aqui está o arquivo de entrada que precisamos analisar -
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());
}
}
}
}
Resultado
Irá imprimir o seguinte resultado -
Contents of input.txt
Welcome to TutorialsPoint. Simply Easy Learning.
Learn web technologies,
prepare exams,
code online,
all at one place.
NameFileFilter no Commons IO filtra os nomes dos arquivos para um nome.
Declaração de Classe
A seguir está a declaração para org.apache.commons.io.filefilter.NameFileFilter Classe :
public class NameFileFilter
extends AbstractFileFilter implements Serializable
Exemplo de classe NameFileFilter
Aqui está o arquivo de entrada que precisamos analisar -
Welcome to TutorialsPoint. Simply Easy Learning.
Vamos imprimir todos os arquivos e diretórios do diretório atual e, a seguir, filtrar um arquivo cujo nome seja 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]);
}
}
}
Resultado
Irá imprimir o seguinte resultado -
All files and Folders.
.classpath
.project
.settings
bin
input.txt
src
File with name input.txt
input.txt
WildcardFileFilter no Commons IO filtra os arquivos usando os curingas fornecidos.
Declaração de Classe
A seguir está a declaração para org.apache.commons.io.filefilter.WildcardFileFilter Classe -
public class WildcardFileFilter
extends AbstractFileFilter implements Serializable
Exemplo de classe WildcardFileFilter
Aqui está o arquivo de entrada que precisamos analisar
Welcome to TutorialsPoint. Simply Easy Learning.
Vamos imprimir todos os arquivos e diretórios do diretório atual e, em seguida, filtrar um arquivo cujo nome termina com 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]);
}
}
}
Resultado
Irá imprimir o seguinte resultado.
All files and Folders.
.classpath
.project
.settings
bin
input.txt
src
File name ending with t
.project
input.txt
SuffixFileFilter filtra os arquivos baseados no sufixo. Isso é usado para recuperar todos os arquivos de um tipo específico.
Declaração de Classe
A seguir está a declaração para org.apache.commons.io.filefilter.SuffixFileFilter Classe -
public class SuffixFileFilter
extends AbstractFileFilter implements Serializable
Exemplo de classe SuffixFileFilter
Aqui está o arquivo de entrada que precisamos analisar -
Welcome to TutorialsPoint. Simply Easy Learning.
Vamos imprimir todos os arquivos e diretórios do diretório atual e depois filtrar um arquivo com extensão 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]);
}
}
}
Resultado
Irá imprimir o seguinte resultado.
All files and Folders.
.classpath
.project
.settings
bin
input.txt
src
File with extenstion txt
input.txt
PrefixFileFilter filtra os arquivos baseados em prefixo.
Declaração de Classe
A seguir está a declaração para org.apache.commons.io.filefilter.PrefixFileFilter Classe -
public class PrefixFileFilter
extends AbstractFileFilter implements Serializable
Exemplo de classe PrefixFileFilter
Aqui está o arquivo de entrada que precisamos analisar -
Welcome to TutorialsPoint. Simply Easy Learning.
Vamos imprimir todos os arquivos e diretórios do diretório atual e, a seguir, filtrar um arquivo com nome começando com 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]);
}
}
}
Resultado
Irá imprimir o seguinte resultado -
All files and Folders.
.classpath
.project
.settings
bin
input.txt
src
File with extenstion txt
input.txt
OrFileFilter fornece lógica OR condicional em uma lista de filtros de arquivo. Ele retorna verdadeiro, se algum filtro na lista retornar verdadeiro. Caso contrário, ele retorna falso.
Declaração de Classe
A seguir está a declaração para org.apache.commons.io.filefilter.OrFileFilter Classe -
public class OrFileFilter
extends AbstractFileFilter implements ConditionalFileFilter, Serializable
Exemplo de classe OrFileFilter
Aqui está o arquivo de entrada que precisamos analisar -
Welcome to TutorialsPoint. Simply Easy Learning.
Vamos imprimir todos os arquivos e diretórios do diretório atual e, a seguir, filtrar um arquivo com o nome começando com. ou termina com 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]);
}
}
}
Resultado
Irá imprimir o seguinte resultado.
All files and Folders.
.classpath
.project
.settings
bin
input.txt
src
File starting with . or ends with t
.classpath
.project
.settings
input.txt
AndFileFilter fornece condicional e lógica em uma lista de filtros de arquivo. Ele retorna verdadeiro se todos os filtros da lista retornarem verdadeiros. Caso contrário, ele retorna falso.
Declaração de Classe
A seguir está a declaração para org.apache.commons.io.filefilter.AndFileFilter Classe -
public class AndFileFilter
extends AbstractFileFilter implements ConditionalFileFilter, Serializable
Exemplo de classe AndFileFilter
Aqui está o arquivo de entrada que precisamos analisar -
Welcome to TutorialsPoint. Simply Easy Learning.
Vamos imprimir todos os arquivos e diretórios do diretório atual e, a seguir, filtrar um arquivo com o nome começando com. e termina com 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]);
}
}
}
Resultado
Irá imprimir o seguinte resultado.
All files and Folders.
.classpath
.project
.settings
bin
input.txt
src
File starting with . or ends with t
.project
FileEntry fornece o estado de um arquivo ou diretório. Atributos de arquivo em um determinado momento.
Declaração de Classe
A seguir está a declaração para org.apache.commons.io.monitor.FileEntry Classe -
public class FileEntry
extends Object implements Serializable
Recursos de FileEntry
O objeto de classe FileEntry fornece os seguintes atributos de arquivo em um determinado momento.
getName () - nome do arquivo.
existe () - verifica se o arquivo existe ou não.
isDirectory () - verifica se o arquivo é um diretório.
lastModified () - fornece a hora da data da última modificação.
listFiles () - fornece o conteúdo do diretório.
Exemplo de classe FileEntry
Aqui está o arquivo de entrada que precisamos analisar -
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());
}
}
Resultado
Irá imprimir o seguinte resultado.
Monitored File: input.txt
File name: input.txt
Is Directory: false
FileAlterationObserver representa o estado dos arquivos abaixo de um diretório raiz, verifica o sistema de arquivos e notifica os ouvintes sobre a criação, alteração ou exclusão de eventos.
Declaração de Classe
A seguir está a declaração para
org.apache.commons.io.monitor.FileAlterationObserver Classe -
public class FileAlterationObserver
extends Object implements Serializable
Exemplo de classe FileAlterationObserver
Aqui está o arquivo de entrada que precisamos analisar -
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());
}
}
}
Resultado
Irá imprimir o seguinte resultado.
Folder created: test
File created: test1
Folder deleted: test
File deleted: test1
FileAlterationMonitor representa um encadeamento que gera um encadeamento de monitoramento, disparando qualquer FileAlterationObserver registrado em um intervalo especificado.
Declaração de Classe
A seguir está a declaração para a classe org.apache.commons.io.monitor.FileAlterationMonitor -
public final class FileAlterationMonitor
extends Object implements Runnable
Exemplo de classe FileAlterationMonitor
Aqui está o arquivo de entrada que precisamos analisar -
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());
}
}
}
Resultado
Irá imprimir o seguinte resultado.
Folder created: test
File created: test1
Folder deleted: test
File deleted: test1
NameFileComparator compara os nomes de dois arquivos. Ele pode ser usado para classificar as listas ou matrizes de arquivos, usando seus nomes, seja em uma forma sensível a maiúsculas, minúsculas ou dependente do sistema.
Declaração de Classe
A seguir está a declaração para
org.apache.commons.io.comparator.NameFileComparator Classe -
public class NameFileComparator
extends Object implements Serializable
Exemplo de classe NameFileComparator
Aqui está o arquivo de entrada que precisamos analisar -
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());
}
}
}
Resultado
Irá imprimir o seguinte resultado.
Sorted By Name:
.classpath
.project
input.txt
SizeFileComparator compara os tamanhos de dois arquivos / diretório. Ele pode ser usado para classificar as listas ou matrizes de arquivos usando seu tamanho ou diretórios, com base no número de filhos.
Declaração de Classe
A seguir está a declaração para
org.apache.commons.io.comparator.SizeFileComparator Classe -
public class SizeFileComparator
extends Object implements Serializable
Exemplo de classe SizeFileComparator
Aqui está o arquivo de entrada que precisamos analisar -
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());
}
}
}
Resultado
Irá imprimir o seguinte resultado.
Sorted By Size:
input.txt, size:124
.project, size:382
.classpath, size:441
LastModifiedFileComparator compara as datas da última modificação de dois arquivos / diretório. Ele pode ser usado para classificar as listas ou matrizes de arquivos / diretórios usando as datas da última modificação.
Declaração de Classe
A seguir está a declaração para org.apache.commons.io.comparator.LastModifiedFileComparator Classe -
public class LastModifiedFileComparator
extends Object implements Serializable
Exemplo de classe LastModifiedFileComparator
Aqui está o arquivo de entrada que precisamos analisar -
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()));
}
}
}
Resultado
Irá imprimir o seguinte resultado.
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
É um proxy InputStream que grava de forma transparente uma cópia de todos os bytes que são lidos do fluxo do proxy para um determinado OutputStream. O fluxo de entrada do proxy é fechado quando o método close () neste proxy é chamado. Ele pode ser usado para operar dois fluxos coletivamente ao mesmo tempo.
Declaração de Classe
A seguir está a declaração para org.apache.commons.io.input.TeeInputStream Classe -
public class TeeInputStream
extends ProxyInputStream
Exemplo de classe TeeInputStream
Neste exemplo, fechar um TeeInputStream fecha o TeeInputStream, bem como os objetos 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());
}
}
}
}
Resultado
Irá imprimir o seguinte resultado.
Output stream 1: Welcome to TutorialsPoint. Simply Easy Learning.
Output stream 2: Welcome to TutorialsPoint. Simply Easy Learning.
TeeOutputStream divide o OutputStream. É nomeado após o comando unix 'tee'. Ele permite que um fluxo seja ramificado em dois fluxos.
Declaração de Classe
A seguir está a declaração para org.apache.commons.io.output.TeeOutputStream Classe -
public class TeeOutputStream
extends ProxyOutputStream
Exemplo de classe TeeOutputStream
Neste exemplo, TeeOutputStream aceita dois fluxos de saída como parâmetro e passa dados para os dados definidos TeeOutputStream para ambos os fluxos de saída.
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());
}
}
}
}
Resultado
Irá imprimir o seguinte resultado.
Output stream 1: Welcome to TutorialsPoint. Simply Easy Learning.
Output stream 2: Welcome to TutorialsPoint. Simply Easy Learning.