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. Confira.

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:

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.

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(); } }
Listagem 1. Lendo dados de um arquivo texto

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 caracteres 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.

A 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. Lendo o arquivo "tabuada.txt"
Figura 3. Lendo o arquivo "AloMundo.java"

Confira também

Artigos relacionados