Classe Java FileInputStream
Classe Java FileInputStream
Neste tutorial, aprenderemos sobre o Java FileInputStream e seus métodos com a ajuda de exemplos.
O FileInputStream
classe do java.io
pacote pode ser usado para ler dados (em bytes) de arquivos.
Ele estende o InputStream
classe abstrata.
Antes de aprendermos sobre FileInputStream
, certifique-se de saber sobre Arquivos Java.
Criar um FileInputStream
Para criar um fluxo de entrada de arquivo, devemos importar o
java.io.FileInputStream
pacote primeiro. Depois de importar o pacote, veja 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 path .
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
O
FileInputStream
classe fornece implementações para diferentes métodos presentes no InputStream
classe. Método read()
read()
- lê um único byte do arquivoread(byte[] array)
- lê os bytes do arquivo e armazena no array especificadoread(byte[] array, int start, int length)
- lê o número de bytes igual a comprimento do arquivo e armazena no array especificado a partir da posição start
Suponha que temos um arquivo chamado 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();
}
}
}
Saída
Data in the file: This is a line of text inside the file.
No exemplo acima, criamos um fluxo de entrada de arquivo chamado input . O fluxo de entrada está vinculado ao input.txt Arquivo.
FileInputStream input = new FileInputStream("input.txt");
Para ler os dados do arquivo, usamos o
read()
método dentro do loop while. Método available()
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();
}
}
}
Saída
Available bytes at the beginning: 39 Available bytes at the end: 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. - Usamos então 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();
}
}
}
Saída
Input Stream after skipping 5 bytes: is a line of text inside the file.
No exemplo acima, usamos o
skip()
método para pular 5 bytes de dados do fluxo de entrada de arquivo. Portanto, os bytes que representam o texto "This " não é lido do fluxo de entrada. método close()
Para fechar o fluxo de entrada do arquivo, podemos usar o
close()
método. Uma vez que o close()
é 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 é chamado |
getChannel() | retorna o objeto de 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 ao ponto no fluxo de entrada onde a marca foi definida |
Para saber mais, visite Java FileInputStream (documentação oficial do Java).
Java