0Pricing
Java Academy · Aula

Alternativa BufferedReader

Leitura mais rápida do console

Alternativa BufferedReader é uma aula grátis de Java Academy no CoddyKit. Esta é a aula 4 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.

Um leitor mais rápido

Scanner é conveniente, mas relativamente lento para entradas grandes. Para leituras de grande volume, BufferedReader de java.io é muito mais rápido porque lê grandes blocos de uma só vez.

Criando um BufferedReader

Envolva um InputStreamReader em torno de System.in, dentro de um BufferedReader. Aqui usamos um StringReader para que os exemplos sejam executados sem entrada digitada.

import java.io.BufferedReader;
import java.io.StringReader;
import java.io.IOException;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new StringReader("Hello"));
        System.out.println(reader.readLine());
        reader.close();
    }
}

readLine retorna uma String

readLine() lê uma linha inteira como uma String, sem o terminador de linha. Diferentemente de Scanner, ele sempre retorna texto; portanto, você mesmo deve converter os números.

import java.io.BufferedReader;
import java.io.StringReader;
import java.io.IOException;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new StringReader("first\nsecond"));
        System.out.println(reader.readLine());
        System.out.println(reader.readLine());
        reader.close();
    }
}

O fim da entrada é null

Quando não há mais entrada, readLine() retorna null. Esse é o sinal para interromper a leitura.

import java.io.BufferedReader;
import java.io.StringReader;
import java.io.IOException;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new StringReader("one line"));
        System.out.println(reader.readLine());
        System.out.println(reader.readLine());
        reader.close();
    }
}

Lendo todas as linhas

Repita enquanto readLine() não for null para processar todas as linhas da entrada.

import java.io.BufferedReader;
import java.io.StringReader;
import java.io.IOException;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new StringReader("a\nb\nc"));
        String line;
        while ((line = reader.readLine()) != null) {
            System.out.println("> " + line);
        }
        reader.close();
    }
}

Convertendo números manualmente

Como readLine fornece texto, converta-o com Integer.parseInt quando precisar de um número.

import java.io.BufferedReader;
import java.io.StringReader;
import java.io.IOException;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new StringReader("42"));
        int n = Integer.parseInt(reader.readLine().trim());
        System.out.println(n * 2);
        reader.close();
    }
}

Dividindo uma linha em elementos

Para ler vários números de uma linha, divida a linha com split e converta cada parte.

import java.io.BufferedReader;
import java.io.StringReader;
import java.io.IOException;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new StringReader("10 20 30"));
        String[] parts = reader.readLine().split(" ");
        int sum = 0;
        for (String p : parts) {
            sum += Integer.parseInt(p);
        }
        System.out.println(sum);
        reader.close();
    }
}

Exceções verificadas

readLine declara uma IOException verificada; portanto, você deve declarar throws IOException ou envolver a chamada em um try-catch. Scanner não exige isso.

import java.io.BufferedReader;
import java.io.StringReader;
import java.io.IOException;

public class Main {
    public static void main(String[] args) {
        try {
            BufferedReader reader = new BufferedReader(new StringReader("data"));
            System.out.println(reader.readLine());
            reader.close();
        } catch (IOException e) {
            System.out.println("Read error");
        }
    }
}

Try-with-resources

Use try-with-resources para que o leitor seja fechado automaticamente, mesmo que ocorra uma exceção.

import java.io.BufferedReader;
import java.io.StringReader;
import java.io.IOException;

public class Main {
    public static void main(String[] args) throws IOException {
        try (BufferedReader reader = new BufferedReader(new StringReader("auto-closed"))) {
            System.out.println(reader.readLine());
        }
    }
}

Um exemplo real com System.in

Para ler uma entrada real do teclado, envolva System.in. Execute este exemplo localmente, digite uma linha e pressione Enter.

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        System.out.print("Enter text: ");
        String input = reader.readLine();
        System.out.println("You typed: " + input);
    }
}

Scanner versus BufferedReader

Escolha Scanner pela praticidade e pela conversão fácil de números. Escolha BufferedReader para obter velocidade com entradas grandes, aceitando que você mesmo deverá converter os dados e tratar a IOException.

Verificação rápida

Teste seus conhecimentos sobre BufferedReader.

Recapitulação

Você aprendeu a alternativa BufferedReader:

  • Envolva System.in em InputStreamReader e depois em BufferedReader
  • readLine() retorna uma linha inteira ou null no fim da entrada
  • Converta os números manualmente com Integer.parseInt e split
  • Ele gera uma IOException verificada; portanto, trate-a ou declare-a
  • Prefira-o ao Scanner para entradas grandes e críticas para o desempenho

Perguntas Frequentes

A aula “Alternativa BufferedReader” é grátis?

Sim — o texto completo de “Alternativa 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 “Alternativa BufferedReader”?

Leitura mais rápida do console 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 4 de 4.

Quanto tempo leva a aula “Alternativa 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. Lendo Entrada com Scanner
  2. Lendo Números e Linhas
  3. Validando a Entrada do Usuário
  4. Alternativa BufferedReader
← Voltar para Java Academy