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

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.