DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

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.


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

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.



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]
Publicidade
Autor
Omero Francisco Bertol

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
Estatísticas
Favorito:
Comentários:
Feedback:
Utilidade:
1   0
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]


Este post está fechado. Saiba mais sobre a assinatura MVP!
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03