Como ler um arquivo de texto em Java?
A leitura de arquivos é uma funcionalidade essencial em qualquer linguagem de programação. Em Java, existem diferentes maneiras de ler um arquivo de texto, dependendo da necessidade de desempenho e simplicidade do código.
1. Lendo Arquivos com FileReader
e BufferedReader
O FileReader
permite ler caracteres diretamente de um arquivo, enquanto o BufferedReader
melhora a performance ao armazenar os dados em buffer.
import java.io.*;
public class LeitorArquivo {
public static void main(String[] args) {
try (BufferedReader br = new BufferedReader(new FileReader("arquivo.txt"))) {
String linha;
while ((linha = br.readLine()) != null) {
System.out.println(linha);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
Neste código, abrimos um arquivo chamado arquivo.txt
, lemos linha por linha e exibimos no console.
2. Utilizando Files.readAllLines()
(Java 8+)
Se quiser uma abordagem mais moderna e eficiente, a API java.nio.file
pode ser utilizada.
import java.nio.file.*;
import java.io.IOException;
import java.util.List;
public class LeitorArquivoNIO {
public static void main(String[] args) {
try {
List<String> linhas = Files.readAllLines(Paths.get("arquivo.txt"));
linhas.forEach(System.out::println);
} catch (IOException e) {
e.printStackTrace();
}
}
}
Este método lê todas as linhas do arquivo e as armazena em uma lista.
3. Lendo Arquivos de Forma Eficiente com Files.lines()
Se estiver lidando com arquivos grandes, Files.lines()
pode ser mais eficiente ao utilizar streams.
import java.nio.file.*;
import java.io.IOException;
public class LeitorArquivoStream {
public static void main(String[] args) {
try {
Files.lines(Paths.get("arquivo.txt")).forEach(System.out::println);
} catch (IOException e) {
e.printStackTrace();
}
}
}
Aqui, utilizamos um stream de linhas, processando o arquivo de forma mais eficiente para grandes volumes de dados.
4. Comparação entre Métodos
Método | Vantagens |
---|---|
BufferedReader |
Melhor para leitura linha a linha |
Files.readAllLines() |
Simples e fácil de usar, mas pode consumir mais memória |
Files.lines() |
Usa Streams, ideal para arquivos grandes |
Conclusão
A escolha do método para leitura de arquivos depende do tamanho do arquivo e do uso pretendido. Para arquivos pequenos, Files.readAllLines()
é prático. Já para grandes volumes de dados, BufferedReader
ou Files.lines()
são mais eficientes.
Por que a leitura de arquivos de forma eficiente é essencial para aplicações Java?
A leitura de arquivos é um recurso fundamental para qualquer aplicação que manipula dados externos. Em sistemas de logs, por exemplo, a eficiência na leitura pode impactar diretamente a análise de grandes volumes de dados. Frameworks como Spring Boot utilizam a leitura de arquivos para processar configurações e logs de aplicações. Dominar os diferentes métodos de leitura permite criar soluções escaláveis e otimizadas.
Algumas aplicações:
- Processamento de arquivos de log
- Leitura de arquivos de configuração
- Importação de dados de arquivos externos
- Manipulação de grandes volumes de dados
Dicas para quem está começando
- Use
BufferedReader
para leitura linha a linha - Prefira
Files.readAllLines()
para arquivos pequenos - Utilize
Files.lines()
para leitura eficiente de arquivos grandes - Não se esqueça de tratar exceções (
IOException
) - Feche os recursos corretamente usando
try-with-resources
Contribuições de Rodrigo Farias