DEV Community

Usando os fluxos baseados em caracteres da linguagem Java

Para realizar operações de I/O com base em caracteres, o Java fornece uma hierarquia própria de fluxos baseados em caracteres, com classes abstratas como Reader e Writer. Essas classes permitem a leitura e escrita diretamente de caracteres, sendo mais adequadas para dados de texto do que os fluxos de bytes. Os métodos principais dessas classes lidam com operações de leitura e escrita e podem lançar IOException em caso de erro.

Estrutura de Fluxos de Caracteres

Classes Abstratas Principais:

  • Reader: Base para leitura de caracteres.
  • Writer: Base para escrita de caracteres.

Essas classes formam a estrutura mínima de operações de I/O para fluxos de caracteres, com métodos aplicáveis a todas as subclasses.

Entrada do Console com Fluxos de Caracteres
Para programas internacionalizados ou que manipulam texto, é preferível ler caracteres do console usando fluxos de caracteres. Como System.in é um fluxo de bytes, ele precisa ser adaptado para fluxos de caracteres.

Para isso, usamos:

  • InputStreamReader: Converte bytes para caracteres.
  • BufferedReader: Melhora a eficiência ao armazenar a entrada em buffer.

Exemplo de Leitura de Entrada do Console
Para ler a entrada do console com BufferedReader, primeiramente, convertemos System.in em um fluxo de caracteres usando InputStreamReader:

import java.io.*;

public class ConsoleReaderExample {
  public static void main(String args[]) {
    try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) {
      System.out.print("Digite uma linha de texto: ");
      String linha = reader.readLine();
      System.out.println("Você digitou: " + linha);
    } catch(IOException e) {
      System.out.println("Erro de entrada/saída: " + e);
    }
  }
}

Enter fullscreen mode Exit fullscreen mode

Explicação do Código

  • InputStreamReader: Converte o fluxo de bytes de System.in para um fluxo de caracteres.
  • BufferedReader: Utilizado para leitura eficiente de caracteres, strings e linhas.

Vantagens dos Fluxos de Caracteres

  • Internacionalização: Compatíveis com diferentes conjuntos de caracteres.
  • Eficiência: BufferedReader permite ler uma linha inteira de uma vez, simplificando o processo e reduzindo chamadas de sistema.

Esses fluxos de caracteres facilitam o tratamento de textos e são ideais para entrada de dados e manipulação de arquivos em que caracteres e texto são o foco principal.

Image description

Top comments (1)

Collapse
 
programmerraja profile image
Boopathi

This is a very helpful explanation of character-based streams in Java! It's great to see examples like the console reader, which makes the concepts more practical.