0Pricing
Java Academy · Aula

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 → bytes
  • InputStreamReader → caracteres
  • BufferedReader → 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

  1. Por que usar BufferedReader
  2. Lendo linhas
  3. Analisando números da entrada
  4. Fechando fluxos com segurança
← Voltar para Java Academy