English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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.
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.
A classe InputStreamReader fornece implementações de diferentes métodos existentes na classe Reader.
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().
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.
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.
Method | Description |
---|---|
ready() | Check if the stream is ready to be read |
mark() | Mark the position of the data read in the stream |
reset() | Reset Markers |