Neste tutorial, aprenderemos sobre a classe Java InputStream e seus métodos com a ajuda de um exemplo.
A InputStream
classe do java.io
pacote é uma superclasse abstrata que representa um fluxo de entrada de bytes.
Por InputStream
ser uma classe abstrata, não é útil por si só. No entanto, suas subclasses podem ser usadas para ler dados.
Subclasses de InputStream
Para usar a funcionalidade de InputStream
, podemos usar suas subclasses. Alguns deles são:
- FileInputStream
- ByteArrayInputStream
- ObjectInputStream
Aprenderemos sobre todas essas subclasses no próximo tutorial.
Crie um InputStream
Para criar um InputStream, devemos java.io.InputStream
primeiro importar o pacote. Depois de importar o pacote, aqui está como podemos criar o fluxo de entrada.
// Creates an InputStream InputStream object1 = new FileInputStream();
Aqui, criamos um fluxo de entrada usando FileInputStream
. É porque InputStream
é uma classe abstrata. Portanto, não podemos criar um objeto de InputStream
.
Nota : Também podemos criar um fluxo de entrada de outras subclasses de InputStream
.
Métodos de InputStream
A InputStream
classe fornece métodos diferentes que são implementados por suas subclasses. Aqui estão alguns dos métodos comumente usados:
read()
- lê um byte de dados do fluxo de entradaread(byte() array)
- lê bytes do stream e armazena na matriz especificadaavailable()
- retorna o número de bytes disponíveis no fluxo de entradamark()
- marca a posição no fluxo de entrada até a qual os dados foram lidosreset()
- retorna o controle para o ponto no riacho onde a marca foi definidamarkSupported()
- verifica se o métodomark()
ereset()
é compatível com o fluxoskips()
- pula e descarta o número especificado de bytes do fluxo de entradaclose()
- fecha o fluxo de entrada
Exemplo: InputStream usando FileInputStream
Aqui está como podemos implementar InputStream
usando a FileInputStream
classe.
Suponha que temos um arquivo denominado input.txt com o seguinte conteúdo.
This is a line of text inside the file.
Vamos tentar ler este arquivo usando FileInputStream
(uma subclasse de InputStream
).
import java.io.FileInputStream; import java.io.InputStream; public class Main ( public static void main(String args()) ( byte() array = new byte(100); try ( InputStream input = new FileInputStream("input.txt"); System.out.println("Available bytes in the file: " + input.available()); // Read byte from the input stream input.read(array); System.out.println("Data read from the file: "); // Convert byte array into string String data = new String(array); System.out.println(data); // Close the input stream input.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) )
Resultado
Available bytes in the file: 35 Data read from the file: This is a line of text inside the file
No exemplo acima, criamos um fluxo de entrada usando a FileInputStream
classe. O fluxo de entrada está vinculado ao arquivo input.txt .
InputStream input = new FileInputStream("input.txt");
Para ler os dados do arquivo input.txt , implementamos esses dois métodos.
input.read(array); // to read data from the input stream input.close(); // to close the input stream
Para saber mais, visite Java InputStream (documentação oficial do Java).