Java InputStream (com exemplo)

Neste tutorial, aprenderemos sobre a classe Java InputStream e seus métodos com a ajuda de um exemplo.

A InputStreamclasse do java.iopacote é uma superclasse abstrata que representa um fluxo de entrada de bytes.

Por InputStreamser 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.InputStreamprimeiro 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 InputStreamclasse 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 entrada
  • read(byte() array) - lê bytes do stream e armazena na matriz especificada
  • available() - retorna o número de bytes disponíveis no fluxo de entrada
  • mark() - marca a posição no fluxo de entrada até a qual os dados foram lidos
  • reset() - retorna o controle para o ponto no riacho onde a marca foi definida
  • markSupported()- verifica se o método mark()e reset()é compatível com o fluxo
  • skips() - pula e descarta o número especificado de bytes do fluxo de entrada
  • close() - fecha o fluxo de entrada

Exemplo: InputStream usando FileInputStream

Aqui está como podemos implementar InputStreamusando a FileInputStreamclasse.

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 FileInputStreamclasse. 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).

Artigos interessantes...