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:

Leitura do arquivo no terminal Linux

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:

  • ManipuladorArquivo.java
  • Principal.java

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();
	}

}
Classe ManipuladorArquivo.java no editor

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);
	}

}
Classe Principal.Java no editor

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:

Programa em execução

Figura 4: Programa em execução

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

Conteúdo do arquivo file.txt após escrita

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.