Java FileInputStream (com exemplos)

Neste tutorial, aprenderemos sobre Java FileInputStream e seus métodos com a ajuda de exemplos.

A FileInputStreamclasse do java.iopacote pode ser usada para ler dados (em bytes) de arquivos.

Ele estende a InputStreamclasse abstrata.

Antes de aprendermos sobre FileInputStream, certifique-se de saber sobre Arquivos Java.

Crie um FileInputStream

Para criar um fluxo de entrada de arquivo, devemos importar o java.io.FileInputStreampacote primeiro. Depois de importar o pacote, aqui está como podemos criar um fluxo de entrada de arquivo em Java.

1. Usando o caminho para o arquivo

 FileInputStream input = new FileInputStream(stringPath); 

Aqui, criamos um fluxo de entrada que será vinculado ao arquivo especificado pelo caminho.

2. Usando um objeto do arquivo

 FileInputStream input = new FileInputStream(File fileObject); 

Aqui, criamos um fluxo de entrada que será vinculado ao arquivo especificado por fileObject.

Métodos de FileInputStream

A FileInputStreamclasse fornece implementações para diferentes métodos presentes na InputStreamclasse.

Método read ()

  • read() - lê um único byte do arquivo
  • read(byte() array) - lê os bytes do arquivo e os armazena na matriz especificada
  • read(byte() array, int start, int length) - lê o número de bytes igual ao comprimento do arquivo e armazena na matriz especificada a partir da posição inicial

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.

 import java.io.FileInputStream; public class Main ( public static void main(String args()) ( try ( FileInputStream input = new FileInputStream("input.txt"); System.out.println("Data in the file: "); // Reads the first byte int i = input.read(); while(i != -1) ( System.out.print((char)i); // Reads next byte from the file i = input.read(); ) input.close(); ) catch(Exception e) ( e.getStackTrace(); ) ) ) 

Resultado

 Dados no arquivo: Esta é uma linha de texto dentro do arquivo. 

No exemplo acima, criamos um fluxo de entrada de arquivo denominado input. O fluxo de entrada está vinculado ao arquivo input.txt .

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

Para ler os dados do arquivo, usamos o read()método dentro do loop while.

disponível () Método

Para obter o número de bytes disponíveis, podemos usar o available()método. Por exemplo,

 import java.io.FileInputStream; public class Main ( public static void main(String args()) ( try ( // Suppose, the input.txt file contains the following text // This is a line of text inside the file. FileInputStream input = new FileInputStream("input.txt"); // Returns the number of available bytes System.out.println("Available bytes at the beginning: " + input.available()); // Reads 3 bytes from the file input.read(); input.read(); input.read(); // Returns the number of available bytes System.out.println("Available bytes at the end: " + input.available()); input.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) ) 

Resultado

 Bytes disponíveis no início: 39 Bytes disponíveis no final: 36 

No exemplo acima,

  1. Primeiro usamos o available()método para verificar o número de bytes disponíveis no fluxo de entrada do arquivo.
  2. Em seguida, usamos o read()método 3 vezes para ler 3 bytes do fluxo de entrada do arquivo.
  3. Agora, depois de ler os bytes, verificamos novamente os bytes disponíveis. Desta vez, os bytes disponíveis diminuíram em 3.

Método skip ()

Para descartar e pular o número especificado de bytes, podemos usar o skip()método. Por exemplo,

 import java.io.FileInputStream; public class Main ( public static void main(String args()) ( try ( // Suppose, the input.txt file contains the following text // This is a line of text inside the file. FileInputStream input = new FileInputStream("input.txt"); // Skips the 5 bytes input.skip(5); System.out.println("Input stream after skipping 5 bytes:"); // Reads the first byte int i = input.read(); while (i != -1) ( System.out.print((char) i); // Reads next byte from the file i = input.read(); ) // close() method input.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) ) 

Resultado

 Fluxo de entrada após pular 5 bytes: é uma linha de texto dentro do arquivo. 

No exemplo acima, usamos o skip()método para pular 5 bytes de dados do fluxo de entrada do arquivo. Conseqüentemente, os bytes que representam o texto "This" não são lidos no fluxo de entrada.

Método close ()

Para fechar o fluxo de entrada do arquivo, podemos usar o close()método. Depois que o close()método é chamado, não podemos usar o fluxo de entrada para ler os dados.

Em todos os exemplos acima, usamos o close()método para fechar o fluxo de entrada do arquivo.

Outros métodos de FileInputStream

Métodos Descrições
finalize() garante que o close()método seja chamado
getChannel() retorna o objeto FileChannelassociado ao fluxo de entrada
getFD() retorna o descritor de arquivo associado ao fluxo de entrada
mark() marcar a posição no fluxo de entrada até a qual os dados foram lidos
reset() retorna o controle para o ponto no fluxo de entrada onde a marca foi definida

Para saber mais, visite Java FileInputStream (documentação oficial do Java).

Artigos interessantes...