Como criar um arquivo e escrever nele em Java: guia completo com exemplos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Criação de arquivo e escrita nele em Java: entendendo de uma vez por todas

\n\n

A pergunta "How do I create a file and write to it?" é uma das mais populares no Stack Overflow. E não é surpresa: trabalhar com arquivos é o básico que todo desenvolvedor Java aprende. Mas o diabo, como sempre, está nos detalhes. Qual classe escolher? Como não perder dados? Como tratar exceções? Neste artigo, não vamos apenas dar uma resposta pronta, mas analisar todas as formas populares, seus prós e contras, para que você possa trabalhar com arquivos em Java com confiança.

\n\n

Vamos abordar a criação de arquivo e escrita nele em Java, desde os clássicos FileWriter e BufferedWriter até o moderno Files.writeString(). Vamos lá!

\n\n

1. Forma clássica: FileWriter

\n\n

A maneira mais simples e intuitiva de criar um arquivo e escrever texto nele é usar java.io.FileWriter. Ele foi criado especificamente para escrever fluxos de caracteres.

\n\n

Como funciona?

\n

O construtor de FileWriter recebe o nome do arquivo (ou um objeto File). Se o arquivo não existir, ele será criado automaticamente. Se o arquivo existir, ele será sobrescrito (a menos que você especifique a flag append).

\n\n
import java.io.FileWriter;\nimport java.io.IOException;\n\npublic class FileWriterExample {\n    public static void main(String[] args) {\n        try (FileWriter writer = new FileWriter("example.txt")) {\n            writer.write("Olá, mundo! Esta é a primeira linha.\\n");\n            writer.write("E esta é a segunda linha.");\n            System.out.println("Arquivo criado e escrito com sucesso!");\n        } catch (IOException e) {\n            System.err.println("Erro ao trabalhar com o arquivo: " + e.getMessage());\n        }\n    }\n}\n
\n\n

Importante: Usamos try-with-resources (Java 7+). Isso garante que o fluxo será fechado automaticamente, mesmo se ocorrer uma exceção. Esquecer de fechar o FileWriter é um dos erros mais comuns de iniciantes.

\n\n

Quando usar FileWriter?

\n
    \n
  • Para escrita simples de pequenos arquivos de texto.
  • \n
  • Quando não é necessária alta performance.
  • \n
  • Para prototipagem rápida.
  • \n
\n\n

Desvantagens

\n
    \n
  • Ineficiente para escrever grandes volumes de dados (cada chamada a write() pode resultar em uma chamada de sistema).
  • \n
  • Não suporta especificação de codificação (usa a codificação padrão, o que pode causar problemas em diferentes plataformas).
  • \n
\n\n

2. Performance e confiabilidade: BufferedWriter

\n\n

Se você precisa escrever muitos dados, use BufferedWriter. Ele envolve o FileWriter e adiciona bufferização. Os dados são primeiro acumulados em um buffer e depois escritos no arquivo em um único bloco grande. Isso acelera significativamente a operação.

\n\n
import java.io.BufferedWriter;\nimport java.io.FileWriter;\nimport java.io.IOException;\n\npublic class BufferedWriterExample {\n    public static void main(String[] args) {\n        String[] lines = {"Linha 1", "Linha 2", "Linha 3"};\n\n        try (BufferedWriter writer = new BufferedWriter(new FileWriter("buffered_example.txt"))) {\n            for (String line : lines) {\n                writer.write(line);\n                writer.newLine(); // Adiciona quebra de linha, independente do SO\n            }\n            System.out.println("Arquivo escrito via BufferedWriter.");\n        } catch (IOException e) {\n            System.err.println("Erro: " + e.getMessage());\n        }\n    }\n}\n
\n\n

Observe o método newLine(). Ao contrário de \\n, ele usa o separador de linhas do sistema, tornando seu código multiplataforma.

\n\n

Quando usar BufferedWriter?

\n
    \n
  • Para escrever grandes arquivos de texto.
  • \n
  • Quando a performance é importante

Blogs

Book Recommendations