Neste tutorial, aprenderemos sobre Java FileInputStream e seus métodos com a ajuda de exemplos.
A FileInputStream
classe do java.io
pacote pode ser usada para ler dados (em bytes) de arquivos.
Ele estende a InputStream
classe 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.FileInputStream
pacote 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 FileInputStream
classe fornece implementações para diferentes métodos presentes na InputStream
classe.
Método read ()
read()
- lê um único byte do arquivoread(byte() array)
- lê os bytes do arquivo e os armazena na matriz especificadaread(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,
- Primeiro usamos o
available()
método para verificar o número de bytes disponíveis no fluxo de entrada do arquivo. - Em seguida, usamos o
read()
método 3 vezes para ler 3 bytes do fluxo de entrada do arquivo. - 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 FileChannel associado 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).