Por que usar BufferedReader
Leituras com e sem buffer
Por que usar BufferedReader é uma aula grátis de Java Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Java Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Java Academy inclui 4 aulas no total.
Lendo a entrada em Java
A maioria dos programas reais precisa de entrada do usuário: um nome, um número, um comando. Java oferece várias formas de ler a entrada, mas uma das mais comuns e eficientes é BufferedReader.
Nesta lição, você aprenderá por que BufferedReader existe e quando deve usá-lo.
De onde vem a entrada
Quando você digita em um console, seu texto entra por System.in. Esse é um fluxo de bytes de baixo nível — ele fornece bytes brutos, não texto legível.
Para transformar esses bytes em caracteres legíveis e linhas completas, envolvemos System.in em classes auxiliares. BufferedReader é a camada que facilita isso.
O que significa “bufferizado”
Ler um byte por vez do teclado ou de um arquivo é lento. Um espaço intermediário é um bloco de memória que armazena muitos caracteres de uma só vez.
BufferedReader preenche esse espaço em grandes blocos e depois fornece os dados rapidamente. Menos acessos ao fluxo subjacente significam melhor desempenho, especialmente para entradas grandes.
A configuração em duas camadas
BufferedReader não pode ler System.in diretamente, porque esse fluxo fornece bytes. Primeiro, nós o envolvemos em um InputStreamReader, que converte bytes em caracteres.
System.in→ bytesInputStreamReader→ caracteresBufferedReader→ linhas armazenadas em buffer
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);A linha clássica
Você verá esta linha exata em quase todo programa Java que lê a entrada do console. Ela encadeia as duas camadas em uma única instrução.
Lembre-se: o InputStreamReader interno converte bytes em caracteres, e o BufferedReader externo adiciona o armazenamento intermediário e o prático método readLine().
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));Importações necessárias
Essas classes ficam no pacote java.io, portanto você precisa importá-las no início do seu arquivo.
A leitura da entrada pode falhar, por isso os métodos lançam IOException — você também precisará importá-la ou tratá-la, como veremos mais adiante.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;BufferedReader versus Scanner
Os iniciantes costumam conhecer Scanner primeiro. Ele é mais amigável (pode analisar números diretamente), mas é mais lento.
- Scanner: análise fácil, maior sobrecarga.
- BufferedReader: mais rápido, lê linhas inteiras, mas você mesmo converte os números.
Para entradas grandes ou programação competitiva, BufferedReader é mais rápido.
Lendo uma linha inteira
O método principal é readLine(). Ele lê tudo o que o usuário digita até que pressione Enter e retorna o conteúdo como uma String (sem a quebra de linha).
Se não houver mais entrada, readLine() retornará null. Exploraremos isso na próxima lição.
String name = br.readLine();
System.out.println("Hello, " + name);Um programa completo de leitura
Aqui está um programa completo. Ele lê uma linha e cumprimenta o usuário. Observe throws IOException em main — uma forma rápida de deixar os erros de entrada se propagarem durante o aprendizado.
Este trecho aguarda a entrada do teclado, portanto não pode ser executado automaticamente aqui, mas é um programa Java válido.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
String name = br.readLine();
System.out.println("Hi " + name);
}
}Não é necessária entrada para comprovar o funcionamento
Para ver que as camadas existem e compilam, aqui está uma versão executável que não lê nada — ela apenas confirma que o objeto foi criado.
Em um aplicativo real, você chamaria readLine(), mas esta versão exibe uma mensagem para que você possa executá-la agora mesmo.
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) {
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
System.out.println("BufferedReader is ready!");
}
}Quando usar BufferedReader
Use BufferedReader quando você:
- ler muitas linhas ou arquivos grandes,
- se importar com a velocidade,
- quiser texto simples, linha a linha.
Use Scanner quando quiser analisar números rapidamente e a entrada for pequena. Ambos são válidos — escolha a ferramenta adequada.
Verificação rápida
Teste sua compreensão da configuração do BufferedReader.
Recapitulação
Você aprendeu que System.in é um fluxo de bytes, envolvido primeiro por InputStreamReader (bytes para caracteres) e depois por BufferedReader (armazenamento intermediário e readLine()).
O armazenamento intermediário melhora o desempenho, e BufferedReader é excelente para entradas grandes ou baseadas em linhas. A seguir: leitura detalhada de linhas.
Perguntas Frequentes
A aula “Por que usar BufferedReader” é grátis?
Sim — o texto completo de “Por que usar BufferedReader” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Java Academy, atualize para CoddyKit PRO. O curso de Java Academy inclui 4 aulas no total.
O que vou aprender em “Por que usar BufferedReader”?
Leituras com e sem buffer Você pratica Java Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Java Academy?
Nenhuma experiência prévia é necessária. Java Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.
Quanto tempo leva a aula “Por que usar BufferedReader”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Java Academy?
Sim. Cada aula de Java Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Por que usar BufferedReader
- Lendo linhas
- Analisando números da entrada
- Fechando fluxos com segurança