Lendo dados de Txt com Java
Neste segundo artigo sobre a manipulação de arquivos texto usando as classes do pacote java.io será demonstrado como recuperar dados de arquivos que utilizam o formato TXT. As classes FileReader e BufferedReader são utilizadas na abertura e na leitura de dados baseada em caracteres de um arquivo de texto. O método read() é empregado na leitura de um caractere enquanto que o método readLine() deverá ser aplicado na leitura de uma linha do arquivo texto.
No artigo Criando e Gravando dados em Txt com Java foi apresentado como realizar a criação e a gravação de dados em um arquivo texto usando as classes FileWriter e PrintWriter. Neste segundo artigo que aborda este tema será demonstrado como recuperar os dados de arquivos que utilizam o formato txt.
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.
Para demonstrar a utilização da classe FileReader para entrada baseada em caracteres de arquivos texto será desenvolvida uma aplicação Java para efetuar a leitura, da primeira até a última linha, de arquivos criados neste formato.
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 do arquivo, leitura dos dados e fechamento do arquivo.
A Listagem 1 apresenta como utilizar as classes FileReader e BufferedReader na abertura e leitura de dados baseada em caracteres de um arquivo de texto. O método read() é empregado na leitura de um caractere enquanto que o método readLine() deverá ser aplicado na leitura de uma linha do arquivo texto.
Listagem 1. Lendo dados de um arquivo texto.
Executando a aplicação deve-se informar o nome do arquivo texto e o conteúdo do arquivo lido será exibido como pode ser observado nas duas figuras a seguir:
a) Figura 2 mostra o resultado da leitura do arquivo, "tabuada.txt" localizado na unidade "d", criado como exemplo no artigo Criando e Gravando dados em Txt com Java.
b) Figura 3 mostra o resultado da leitura do arquivo, "AloMundo.java" localizado na unidade "d", que representa um código fonte escrito em Linguagem Java.
Veja também:
1) Arquivos e fluxos de dados - Revista Easy Java Magazine 12
2) Criando e Gravando dados em Txt com Java
3) Criando e Gravando dados em Txt com Delphi
4) Lendo dados de Txt com Delphi
5) Criando, Gravando e Lendo dados de Txt com Delphi
Obrigado e um abraço.
Prof. Omero Francisco Bertol (http://www.pb.utfpr.edu.br/omero/)
Aplicações Java (http://www.pb.utfpr.edu.br/omero/Java/Fontes.HTM)
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 da classe FileReader para entrada baseada em caracteres de arquivos texto será desenvolvida uma aplicação Java para efetuar a leitura, da primeira até a última linha, de arquivos criados neste formato.
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 do arquivo, leitura dos dados e fechamento do arquivo.
A Listagem 1 apresenta como utilizar as classes FileReader e BufferedReader na abertura e leitura de dados baseada em caracteres de um arquivo de texto. O método read() é empregado na leitura de um caractere enquanto que o método readLine() deverá ser aplicado na leitura de uma linha do arquivo texto.
Listagem 1. Lendo dados de um arquivo texto.
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;
public class Exemplo {
public static void main(String[] args) {
Scanner ler = new Scanner(System.in);
System.out.printf("Informe o nome de arquivo texto:\n");
String nome = ler.nextLine();
System.out.printf("\nConteúdo do arquivo texto:\n");
try {
FileReader arq = new FileReader(nome);
BufferedReader lerArq = new BufferedReader(arq);
String linha = lerArq.readLine(); // lê a primeira linha
// a variável "linha" recebe o valor "null" quando o processo
// de repetição atingir o final do arquivo texto
while (linha != null) {
System.out.printf("%s\n", linha);
linha = lerArq.readLine(); // lê da segunda até a última linha
}
arq.close();
} catch (IOException e) {
System.err.printf("Erro na abertura do arquivo: %s.\n",
e.getMessage());
}
System.out.println();
}
}
| Entendendo o código fonte da Listagem 1: | |
| [ 1 ] | O usuário final informa o nome do arquivo que será aberto para operações de entrada através do objeto arq, instanciado e criado a partir da classe FileReader. |
| [ 2 ] | Objeto de leitura lerArq é associado a um fluxo de entrada de dados baseado em carecteres através da classe BufferedReader. |
| [ 3 ] | Definido o arquivo de texto externo, foi implementado um processo de repetição (while) para ler todas as linhas do arquivo para exibi-las no fluxo padrão de saída System.out. |
| [ 4 ] | O tratamento de exceções foi implementado usando um bloco try catch com a classe IOException responsável pelas exceções em operações de entrada e saída. Outras importantes classes de exceções derivadas da classe IOException são: FileNotFoundException, que ocorre se o arquivo não for localizado ou um novo arquivo não puder ser criado; e EOFException, que acontece se houver uma tentativa de ler depois do final do arquivo. |
Executando a aplicação deve-se informar o nome do arquivo texto e o conteúdo do arquivo lido será exibido como pode ser observado nas duas figuras a seguir:
a) Figura 2 mostra o resultado da leitura do arquivo, "tabuada.txt" localizado na unidade "d", criado como exemplo no artigo Criando e Gravando dados em Txt com Java.
b) Figura 3 mostra o resultado da leitura do arquivo, "AloMundo.java" localizado na unidade "d", que representa um código fonte escrito em Linguagem Java.
![]() | |
| Figura 2. Ilustrando a execução da aplicação: lendo o arquivo "tabuada.txt". |
![]() | |
| Figura 3. Ilustrando a execução da aplicação: lendo o arquivo "AloMundo.java". |
Veja também:
1) Arquivos e fluxos de dados - Revista Easy Java Magazine 12
2) Criando e Gravando dados em Txt com Java
3) Criando e Gravando dados em Txt com Delphi
4) Lendo dados de Txt com Delphi
5) Criando, Gravando e Lendo dados de Txt com Delphi
Obrigado e um abraço.
Prof. Omero Francisco Bertol (http://www.pb.utfpr.edu.br/omero/)
Aplicações Java (http://www.pb.utfpr.edu.br/omero/Java/Fontes.HTM)

2 COMENTÁRIOS
Eduardo Corrêa Gonçalves
Bastante didático, parabéns! O número de classes para leitura de arquivos em Java é tão grande que muitas vezes assusta o iniciante. Mas o seu artigo simplificou bem o processo de manipulação de arquivos texto.
[há +1 mês] -
Responder
[autor]
Omero Francisco Bertol
Obrigado Eduardo... Caso eu posso ajudá-lo em outras situações, por favor, me coloco a sua disposição. Um abraço e bom final de semana.
[há +1 mês] -
Responder
[Este post ainda não foi associado a uma sequência]
Você está em:
canal Java
Omero Francisco Bertol
Space do autor
Técnico Mecânico pelo CEFET, Curitiba/PR. Tecnólogo em Processamento de Dados pela UEM, Maringá/PR. Especialista em Informática pela Universidade Federal do Paraná. Mestre em Informática Aplicada pelo Programa de Pós Graduação em Informática Aplicada da PUC, Curitiba/PR. Professor de Ensino Superior...
Space do autor






1
0
