Java permite que você leia e escreva dados em arquivos de texto, usando as classes do pacote java.io. Embora menos poderosos que um SGBDR, arquivos texto são extremamente úteis pela sua simplicidade, legibilidade humana e facilidade de uso em muitos cenários.



📄 O Que é Um Arquivo Texto?

Um arquivo texto é um arquivo que armazena informações como sequências de caracteres (letras, números, símbolos), que podem ser lidos e compreendidos por humanos usando um editor de texto simples (como Bloco de Notas, Notepad++, VS Code, etc.). Diferente de arquivos binários (como imagens, vídeos ou executáveis de programas), que contêm dados em um formato que só computadores entendem diretamente, arquivos texto são legíveis.


Por Que Usar Arquivos Texto para Persistência?

Pontos chave:


🔍 Conceitos Básicos de E/S (Entrada/Saída) em Java

Java lida com operações de entrada e saída (I/O) através de streams. Um stream é uma sequência de dados, como um fluxo contínuo de bytes ou caracteres.

Para arquivos texto, geralmente usamos as classes baseadas em caracteres (Reader e Writer), pois elas lidam automaticamente com a codificação de caracteres (UTF-8, ISO-8859-1, etc.).

Classes Essenciais para Arquivos Texto:

  1. FileWriter: Usado para escrever caracteres em um arquivo.
  2. FileReader: Usado para ler caracteres de um arquivo.
  3. BufferedWriter: Adiciona um "buffer" ao FileWriter, melhorando a performance ao escrever (escreve em blocos maiores).
  4. BufferedReader: Adiciona um "buffer" ao FileReader, melhorando a performance ao ler e fornecendo o útil método readLine().
  5. PrintWriter: Oferece métodos convenientes para escrever dados formatados (como println()) em um arquivo.
  6. File: Representa um arquivo ou diretório no sistema de arquivos. Usado para verificar existência, criar, deletar, etc.

🚀 Exemplo Prático: Escrevendo e Lendo em um Arquivo Texto

Vamos criar um programa que escreve algumas linhas em um arquivo e depois lê o conteúdo desse mesmo arquivo.

Exemplo de Escrita em Arquivo:

import java.io.FileWriter;       // Para escrever caracteres em um arquivo
import java.io.BufferedWriter;   // Para escrever de forma mais eficiente (com buffer)
import java.io.IOException;      // Para tratar exceções de E/S

public class EscreverArquivoTexto {
    public static void main(String[] args) {
        // Define o nome do arquivo onde os dados serão gravados
        String nomeArquivo = "meu_primeiro_arquivo.txt";

        // Usamos try-with-resources para garantir que o writer seja fechado automaticamente
        try (FileWriter fw = new FileWriter(nomeArquivo); // Cria um FileWriter (se o arquivo não existe, ele cria; se existe, sobrescreve)
             BufferedWriter bw = new BufferedWriter(fw)) { // Envolve o FileWriter em um BufferedWriter para melhor performance

            bw.write("Olá, este é o primeiro texto no arquivo."); // Escreve uma linha
            bw.newLine(); // Adiciona uma nova linha
            bw.write("Aqui vai uma segunda linha de dados.");
            bw.newLine();
            bw.write("E uma terceira!");

            System.out.println("Dados gravados com sucesso em " + nomeArquivo);

        } catch (IOException e) {
            // Captura e trata exceções de E/S (como permissão negada, disco cheio, etc.)
            System.err.println("Erro ao escrever no arquivo: " + e.getMessage());
            e.printStackTrace();
        }
    }
}

Ao executar este código, um arquivo chamado meu_primeiro_arquivo.txt será criado (ou sobrescrito) no diretório do seu projeto, contendo as três linhas de texto.