Leitura e escrita de arquivos de texto em Java

Veja neste artigo como trabalhar com a manipulação de arquivos de texto na linguagem Java, escrevendo e lendo seu conteúdo de forma simples com classes nativas.

A leitura e escrita de arquivos por um programa pode se muito útil, seja para servir como arquivo de configurações e evitar a necessidade de modificação frequente do código fonte do próprio programa para cada cenário ou simplesmente para servir para entrada e saída de dados.

Neste artigo vou explicar passo a passo como criar um programa que a realiza leitura e escrita de um arquivo .txt. em Java

1. Criando arquivo para leitura e escrita

Para nosso exemplo foi criado um arquivo chamado 'file.txt' que tem como objetivo ser utilizado para leitura e escrita pelo programa que será criado passo a passo ao longo deste artigo. Neste exemplo o arquivo foi criado através de um terminal Linux, porém o mesmo pode ser criado de qualquer maneira, cabe ao leitor escolher a melhor forma para criação do arquivo (notepad, gedit,vim...). Inicialmente este arquivo está vazio como pode ser visto abaixo:


Figura 1: Leitura do arquivo no terminal Linux

2. Código Java

Para explicar de maneira simples como funciona a leitura e escrita de arquivos, além da criação do arquivo que será utilizado pelo programa, também foi criado um projeto com o nome de Manipulador_de_Arquivo que tem duas classes em seu interior:

2.1 ManipuladorArquivo.java

Classe que tem como função manipular (leitura e escrita) do arquivo txt. Abaixo é possível ver a classe ManipuladorArquivo.java e seus métodos.

Listagem 1: Classe ManipuladorArquivo.java

package gomes.fernando.robson; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.Scanner; public class ManipuladorArquivo { public static void leitor(String path) throws IOException { BufferedReader buffRead = new BufferedReader(new FileReader(path)); String linha = ""; while (true) { if (linha != null) { System.out.println(linha); } else break; linha = buffRead.readLine(); } buffRead.close(); } public static void escritor(String path) throws IOException { BufferedWriter buffWrite = new BufferedWriter(new FileWriter(path)); String linha = ""; Scanner in = new Scanner(System.in); System.out.println("Escreva algo: "); linha = in.nextLine(); buffWrite.append(linha + "\n"); buffWrite.close(); } }

Figura 2: Classe ManipuladorArquivo.java no editor

2.1.1 Breve explicação

Esta classe contém dois métodos estáticos, um para realizar a leitura (leitor) e outro para realizar a escrita(escritor) em arquivos txt.

2.1.2 Método leitor

O método leitor tem como parâmetro de entrada o path (url/caminho) do arquivo que será lido, como pode ser visto na assinatura do método:

public static void leitor(String path) throws IOException

Esse método tem como principal objetos internos o BufferedReader que nada mais é que a classe responsável por gera o buffer que será utilizado para realizar a leitura do arquivo .txt.

BufferedReader buffRead = new BufferedReader(new FileReader(path));

Uma parte importante deste método, responsável por exibir na tela as linhas do arquivo txt poder ser considerado o trecho do laço while que contém o método utilizado para obter o valor de uma linha (string), no exemplo utilizado o valor da linha foi atribuída a uma variável do tipo String como pode ser visto abaixo:

linha = buffRead.readLine();

2.1.3 Método escritor

O método escritor tem como parâmetro de entrada o path (url/caminho) do arquivo que será escrito, como pode ser visto na assinatura do método:

public static void escritor(String path) throws IOException

Esse método tem como principal objeto interno o BufferedWriter, que nada mais é que a classe responsável por gerar o bufferque será utilizado para realizar a escrita no arquivo .txt.

BufferedWriter buffWrite = new BufferedWriter(new FileWriter(path));

Uma parte importante deste método, responsável por inserir no arquivo txt é exatamente o método append localizado no objeto buffWrite. Este método tem como função inserir uma nova sequência de caracteres ao arquivo texto.

buffWrite.append(linha+"\n");

2.1.4 Importante

É de suma importância fechar os arquivos quando o método termina de utilizar os mesmos, para isso basta utilizar o método close contido na classe de leitura ou escrita de arquivos.

buffWrite.close(); ou buffRead.close();

2.2 Principal.java

Classe que tem como principal função utilizar a classe ManipuladorArquivo.java.

Listagem 2: Classe Principal.Java

package gomes.fernando.robson; import java.io.IOException; public class Principal { public static void main(String args[]) throws IOException { String path = "/tmp/file.txt"; ManipuladorArquivo.escritor(path); ManipuladorArquivo.leitor(path); } }

Figura 3: Classe Principal.Java no editor

2.2.1 Breve explicação

A classe contém um único método estático (main) que tem como função rodar o ManipuladorArquivo, passando para os métodos do mesmo o path do arquivo a ser manipulado.

3. Arquivo após utilização do Projeto

Quando o programa foi executado, foi inserida a string “Sou um teste” no arquivo.txt, como e possível ver abaixo:

Figura 4: Programa em execução

Após a execução do programa é possível visualizar a seguinte linha no arquivo.txt.

Figura 5: Conteúdo do arquivo file.txt após escrita

Conclusão

Como foi possível ver ao longo do artigo, é bem simples a realização da leitura e escrita de arquivos quando se está programando em Java e as possibilidades são imensas cabendo somente ao programador ou analista o que fazer.

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados