English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutorial Básico de Java

Java Controle de Fluxo

Java Array

Java Orientação a Objetos (I)

Java Orientação a Objetos (II)

Java Orientação a Objetos (III)

Tratamento de Exceções do Java

Java Lista (List)

Java Queue (fila)

Java Map conjunto

Java Conjunto de conjunto

Java Entrada e Saída (I/)

Java Reader/Writer

Outros tópicos do Java

Classe Java InputStreamReader

Neste tutorial, vamos aprender com exemplos o Java InputStreamReader e seus métodos.

A classe InputStreamReader do pacote java.io pode ser usada para converter dados de bytes em dados de caracteres.

Ele herda a classe abstrata Reader.

A classe InputStreamReader funciona junto com outros fluxos de entrada. Também é conhecida como uma ponte entre fluxo de bytes e fluxo de caracteres. Isso porque o InputStreamReader lê bytes como caracteres do fluxo de entrada.

Por exemplo, alguns caracteres precisam2bytes para armazenar na memória. Para ler esses dados, podemos usar o leitor de fluxo de entrada, que lê2bytes e converte-os em caracteres correspondentes.

criar um InputStreamReader

Para criar um InputStreamReader,我们必须 primeiro importar o pacote java.io.InputStreamReader. Após a importação do pacote, podemos criar o leitor de fluxo de entrada.

//Cria um InputStream
FileInputStream file = new FileInputStream(String path);
//criar um InputStreamReader
InputStreamReader input = new InputStreamReader(file);

No exemplo acima, criamos um InputStreamReader chamado input e um FileInputStream chamado file.

Aqui, os dados do arquivo são armazenados usando alguma codificação de caracteres padrão.

Mas, também podemos especificar o tipo de codificação de caracteres no arquivo (UTF8ouUTF16)

//Cria um InputStreamReader, especificando a codificação de caracteres
InputStreamReader input = new InputStreamReader(file, Charset cs);

Aqui, usamos a classe Charset para especificar a codificação de caracteres do arquivo.

Métodos de InputStreamReader

A classe InputStreamReader fornece implementações de diferentes métodos existentes na classe Reader.

Método read()

  • read() - Lê um caractere do leitor

  • read(char[] array) - Lê caracteres do leitor e os armazena no array especificado

  • read(char[] array, int start, int length) - Lê o número de caracteres igual a length do leitor e armazena começando por start no array especificado

Por exemplo, suponha que tenhamos um arquivo chamado}}input.txtcontendo o seguinte conteúdo.

Esta é uma linha de texto dentro do arquivo.

Vamos tentar usar o leitor InputStreamReader para ler este arquivo.

import java.io.InputStreamReader;
import java.io.FileInputStream;
class Main {
  public static void main(String[] args) {
    //criar um array de caracteres
    char[] array = new char[100];
    try {
      //criar um FileInputStream
      FileInputStream file = new FileInputStream("input.txt");
      //criar um InputStreamReader
      InputStreamReader input = new InputStreamReader(file);
      //ler caracteres do arquivo
      input.read(array);
      System.out.println("Os dados do fluxo:");
      System.out.println(array);
      //Close reader
      input.close();
    }
    catch(Exception e) {
      e.getStackTrace();
    }
  }
}

Output Result

os dados do fluxo:
Esta é uma linha de texto dentro do arquivo.

No exemplo acima, usamos o fluxo de entrada de arquivo para criar um leitor de entrada de fluxo. O leitor de entrada de fluxo está ligado ao arquivoinput.txtligação.

 FileInputStream file = new FileInputStream("input.txt");
 InputStreamReader input = new InputStreamReader(file);

Para ler caracteres de um arquivo, usamos o método read().

método getEncoding()

O método getEncoding() pode ser usado para obter o tipo de codificação utilizado para armazenar dados no fluxo de entrada. Por exemplo,

import java.io.InputStreamReader;
import java.nio.charset.Charset;
import java.io.FileInputStream;
class Main {
  public static void main(String[] args) {
    try {
      //criar um FileInputStream
      FileInputStream file = new FileInputStream("input.txt");
      //usar a codificação padrão para criar um InputStreamReader
      InputStreamReader input1 = new InputStreamReader(file);
      //criar um InputStreamReader com a codificação especificada
      InputStreamReader input2 = new InputStreamReader(file, Charset.forName("UTF8");
      //retorna o código de caracteres da entrada
      System.out.println("input1do código de caracteres: " + input1.getEncoding());
      System.out.println("input2do código de caracteres: " + input2.getEncoding());
      //Close reader
      input1.close();
      input2.close();
    }
    catch(Exception e) {
      e.getStackTrace();
    }
  }
}

Output Result

input1Character Encoding: Cp1252
input2Character Encoding: UTF8

In the above example, we created two input stream readers, named input1and input2.

  • input1No character encoding specified. Therefore, the getEncoding() method returns the standard name of the default character encoding.

  • input2Specify character encodingUTF8. Therefore, the getEncoding() method returns the specified character encoding.

Note: We have used the Charset.forName() method to specify the type of character encoding.

close() method

To close the input stream reader, we can use the close() method. After calling this close() method, we will no longer be able to use the reader to read data.

Other Methods of InputStreamReader

MethodDescription
ready()Check if the stream is ready to be read
mark()Mark the position of the data read in the stream
reset()Reset Markers