Os computadores utilizam os arquivos como estruturas de dados para armazenamento de longo prazo de grandes volumes de dados. Dados mantidos em arquivos são chamados de dados persistentes porque eles existem além da duração da execução do programa em dispositivos de armazenamento secundário como disquete, disco rígido, entre outros.
Nos artigos sobre arquivos texto será demostrado como as aplicações Java criam, recuperam, atualizam e processam arquivos de dados. O processamento de arquivo representa um subconjunto das capacidades de processamento que permitem a um programa armazenar e processar volumes maciços de dados persistentes.
Neste primeiro artigo será demonstrada a criação e a gravação de um arquivo texto no qual os dados são armazenados como uma sequência de caracteres dividida em linhas terminadas por um caractere de fim de linha. Os arquivos no formato texto geralmente são encontrados com nomes com a extensão padrão TXT (abreviação de TEXT, ou texto em inglês). Arquivos texto podem ser facilmente lido ou abertos por qualquer programa que lê texto e, por essa razão, são considerados universais.
Programas Java implementam o processamento de arquivos utilizando as classes do pacote java.io. A hierarquia de classes oferecida por este pacote, apresentada de forma parcial na Figura 1, é relativamente grande e complexa, oferecendo mais de 50 classes distintas para o processamento de entrada e saída em arquivos baseados em bytes e caracteres e arquivos de acesso aleatório. Os arquivos são abertos criando-se objetos através de uma das classes de fluxo, citando:
- FileInputStream: para entrada baseada em bytes de um arquivo.
- FileOutputStream: para saída baseada em bytes para um arquivo.
- RandomAccessFile: para entrada e saída baseada em bytes de e para um arquivo.
- FileReader: para entrada baseada em caracteres de um arquivo.
- FileWriter: para saída baseada em caracteres para um arquivo.
Figura 1. Hierarquia parcial de classes do pacote java.io.
Para demonstrar a utilização das classes para entrada ou saída baseada em caracteres na manipulação de arquivos texto será desenvolvida uma aplicação Java para gravar a tabuada de um número em um arquivo externo denominado de "tabuada.txt" criado na unidade de disco "d".
Desenvolvendo a Aplicação Java
Nos arquivos de texto os dados são organizados como uma sequência de caracteres dividida em linhas terminadas por um caractere de fim de linha (\n). A interação de um programa com um dispositivo através de arquivos passa por três etapas: abertura ou criação de um arquivo, leitura ou gravação de dados e fechamento do arquivo.
A Listagem 1 apresenta como utilizar as classes FileWriter e PrinterWriter na criação e gravação de dados baseada em caracteres para um arquivo de texto. Os métodos print(), println() e printf() são aplicados na gravação de caracteres.
Listagem 1. Gravando dados em um arquivo texto.
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Scanner;
public class Exemplo {
public static void main(String[] args) throws IOException {
Scanner ler = new Scanner(System.in);
int i, n;
System.out.printf("Informe o número para a tabuada:\n");
n = ler.nextInt();
FileWriter arq = new FileWriter("d:\\tabuada.txt");
PrintWriter gravarArq = new PrintWriter(arq);
gravarArq.printf("+--Resultado--+%n");
for (i=1; i<=10; i++) {
gravarArq.printf("| %2d X %d = %2d |%n", i, n, (i*n));
}
gravarArq.printf("+-------------+%n");
arq.close();
System.out.printf("\nTabuada do %d foi gravada com sucesso em \"d:\\tabuada.txt\".\n", n);
}
}
Entendendo o código fonte da Listagem 1:
- O arquivo externo "tabuada.txt" é aberto para operações de saída através do objetoarq instanciado e criado a partir da classe FileWriter.
- O objeto de gravação gravarArq é associado a um fluxo de saída de dados baseado em caracteres através da classe PrinterWriter.
- Definido o arquivo de texto externo, foi implementado o processo de repetição (for) para montar a tabuada de n gravando o resultado no arquivo, que é fechado através do método close().
- Observe que os símbolos %n usados no método printf() gravam um pula linha (caractere de escape \n) no arquivo de saída.
Executando a aplicação deve-se informar o número da tabuada. Ao final do processo de gravação da tabuada no arquivo texto será apresentada uma mensagem indicando que o arquivo "tabuada.txt" foi criado com sucesso na unidade de disco "d". Para visualizar o resultado da gravação basta abrir o arquivo "tabuada.txt" através do bloco de notas, por exemplo. Na Figura 2 pode-se observar a sequência de passos na gravação da tabuada do 8.
Figura 2. Ilustrando a execução da aplicação e abrindo o arquivo texto no bloco de notas.
Neste artigo foi apresentado como gravar informações em um arquivo texto. No próximo artigo sobre a manipulação de arquivos texto em aplicações Java será demonstrado como efetuar a operação de leitura.
Veja também:
Java: Arquivos e fluxos de dados
Criando e Gravando dados em Txt com Delphi
Obrigado e um abraço.