Classe Java ByteArrayInputStream
Classe Java ByteArrayInputStream
Neste tutorial, aprenderemos sobre Java ByteArrayInputStream e seus métodos com a ajuda de exemplos.
O ByteArrayInputStream
classe do java.io
pacote pode ser usado para ler uma matriz de dados de entrada (em bytes).
Ele estende o InputStream
classe abstrata.
Observação :Em ByteArrayInputStream
, o fluxo de entrada é criado usando a matriz de bytes. Ele inclui uma matriz interna para armazenar dados dessa matriz de bytes específica.
Criar um ByteArrayInputStream
Para criar um fluxo de entrada de matriz de bytes, devemos importar o
java.io.ByteArrayInputStream
pacote primeiro. Depois de importar o pacote, aqui está como podemos criar um fluxo de entrada.
// Creates a ByteArrayInputStream that reads entire array
ByteArrayInputStream input = new ByteArrayInputStream(byte[] arr);
Aqui, criamos um fluxo de entrada que lê dados inteiros do
arr
variedade. No entanto, também podemos criar o fluxo de entrada que lê apenas alguns dados do array.
// Creates a ByteArrayInputStream that reads a portion of array
ByteArrayInputStream input = new ByteArrayInputStream(byte[] arr, int start, int length);
Aqui o fluxo de entrada lê o número de bytes igual a comprimento do array começando do start posição.
Métodos de ByteArrayInputStream
O
ByteArrayInputStream
classe fornece implementações para diferentes métodos presentes no InputStream
classe. Método read()
read()
- lê o único byte do array presente no fluxo de entradaread(byte[] array)
- lê bytes do fluxo de entrada e armazena no array especificadoread(byte[] array, int start, int length)
- lê o número de bytes igual a comprimento do stream e armazena no array especificado a partir da posição start
Exemplo:ByteArrayInputStream para ler dados
import java.io.ByteArrayInputStream;
public class Main {
public static void main(String[] args) {
// Creates an array of byte
byte[] array = {1, 2, 3, 4};
try {
ByteArrayInputStream input = new ByteArrayInputStream(array);
System.out.print("The bytes read from the input stream: ");
for(int i= 0; i < array.length; i++) {
// Reads the bytes
int data = input.read();
System.out.print(data + ", ");
}
input.close();
}
catch(Exception e) {
e.getStackTrace();
}
}
}
Saída
The bytes read from the input stream: 1, 2, 3, 4,
No exemplo acima, criamos um fluxo de entrada de matriz de bytes chamado
input
.
ByteArrayInputStream input = new ByteArrayInputStream(array);
Aqui, o fluxo de entrada inclui todos os dados da matriz especificada. Para ler dados do fluxo de entrada, usamos o
read()
método. Método available()
Para obter o número de bytes disponíveis no fluxo de entrada, podemos usar o
available()
método. Por exemplo,
import java.io.ByteArrayInputStream;
public class Main {
public static void main(String args[]) {
// Creates an array of bytes
byte[] array = { 1, 2, 3, 4 };
try {
ByteArrayInputStream input = new ByteArrayInputStream(array);
// Returns the available number of bytes
System.out.println("Available bytes at the beginning: " + input.available());
// Reads 2 bytes from the input stream
input.read();
input.read();
// Returns the available number of 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: 4 Available bytes at the end: 2
No exemplo acima,
- Usamos o
available()
método para verificar o número de bytes disponíveis no fluxo de entrada. - Usamos então o
read()
método 2 vezes para ler 2 bytes do fluxo de entrada. - Agora, depois de ler os 2 bytes, verificamos os bytes disponíveis. Desta vez, os bytes disponíveis diminuíram em 2.
Método skip()
Para descartar e pular o número especificado de bytes, podemos usar o
skip()
método. Por exemplo,
import java.io.ByteArrayInputStream;
public class Main {
public static void main(String args[]) {
// Create an array of bytes
byte[] array = { 1, 2, 3, 4 };
try {
ByteArrayInputStream input = new ByteArrayInputStream(array);
// Using the skip() method
input.skip(2);
System.out.print("Input stream after skipping 2 bytes: ");
int data = input.read();
while (data != -1) {
System.out.print(data + ", ");
data = input.read();
}
// close() method
input.close();
}
catch (Exception e) {
e.getStackTrace();
}
}
}
Saída
Input stream after skipping 2 bytes: 3, 4,
No exemplo acima, usamos o skip() método para pular 2 bytes de dados do fluxo de entrada. Portanto 1 e 2 não são lidos do fluxo de entrada.
método close()
Para fechar o fluxo de entrada, podemos usar o
close()
método. No entanto, o
close()
método não tem efeito em ByteArrayInputStream
classe. Podemos usar os métodos desta classe mesmo após o close()
método é chamado. Outros métodos de ByteArrayInputStream
Métodos | Descrições |
---|---|
finalize() | garante que o close() método é chamado |
mark() | marca 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 |
markSupported() | verifica se o fluxo de entrada suporta mark() e reset() |
Para saber mais, visite Java ByteArrayInputStream (documentação oficial do Java).
Java