Clase Java ByteArrayInputStream
Clase Java ByteArrayInputStream
En este tutorial, aprenderemos sobre Java ByteArrayInputStream y sus métodos con la ayuda de ejemplos.
El ByteArrayInputStream
clase del java.io
El paquete se puede usar para leer una matriz de datos de entrada (en bytes).
Extiende el InputStream
clase abstracta.
Nota :En ByteArrayInputStream
, el flujo de entrada se crea utilizando la matriz de bytes. Incluye una matriz interna para almacenar datos de esa matriz de bytes en particular.
Crea un ByteArrayInputStream
Para crear un flujo de entrada de matriz de bytes, debemos importar el java.io.ByteArrayInputStream
paquete primero. Una vez que importamos el paquete, así es como podemos crear un flujo de entrada.
// Creates a ByteArrayInputStream that reads entire array
ByteArrayInputStream input = new ByteArrayInputStream(byte[] arr);
Aquí, hemos creado un flujo de entrada que lee datos completos del arr
formación. Sin embargo, también podemos crear el flujo de entrada que lee solo algunos datos de la matriz.
// Creates a ByteArrayInputStream that reads a portion of array
ByteArrayInputStream input = new ByteArrayInputStream(byte[] arr, int start, int length);
Aquí el flujo de entrada lee el número de bytes igual a longitud de la matriz a partir del inicio posición.
Métodos de ByteArrayInputStream
El ByteArrayInputStream
La clase proporciona implementaciones para diferentes métodos presentes en el InputStream
clase.
método read()
read()
- lee el byte único de la matriz presente en el flujo de entradaread(byte[] array)
- lee bytes del flujo de entrada y los almacena en la matriz especificadaread(byte[] array, int start, int length)
- lee el número de bytes igual a longitud de la secuencia y se almacena en la matriz especificada a partir de la posición inicio
Ejemplo:ByteArrayInputStream para leer datos
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();
}
}
}
Salida
The bytes read from the input stream: 1, 2, 3, 4,
En el ejemplo anterior, hemos creado un flujo de entrada de matriz de bytes llamado input
.
ByteArrayInputStream input = new ByteArrayInputStream(array);
Aquí, el flujo de entrada incluye todos los datos de la matriz especificada. Para leer datos del flujo de entrada, hemos usado el read()
método.
método disponible()
Para obtener la cantidad de bytes disponibles en el flujo de entrada, podemos usar el available()
método. Por ejemplo,
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();
}
}
}
Salida
Available bytes at the beginning: 4 Available bytes at the end: 2
En el ejemplo anterior,
- Hemos utilizado el
available()
para comprobar el número de bytes disponibles en el flujo de entrada. - Entonces hemos usado el
read()
método 2 veces para leer 2 bytes del flujo de entrada. - Ahora, después de leer los 2 bytes, hemos comprobado los bytes disponibles. Esta vez los bytes disponibles se redujeron en 2.
método skip()
Para descartar y omitir el número especificado de bytes, podemos usar el skip()
método. Por ejemplo,
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();
}
}
}
Salida
Input stream after skipping 2 bytes: 3, 4,
En el ejemplo anterior, hemos utilizado skip() método para omitir 2 bytes de datos del flujo de entrada. Por lo tanto 1 y 2 no se leen del flujo de entrada.
Método cerrar()
Para cerrar el flujo de entrada, podemos usar close()
método.
Sin embargo, el close()
el método no tiene efecto en ByteArrayInputStream
clase. Podemos usar los métodos de esta clase incluso después del close()
se llama al método.
Otros métodos de ByteArrayInputStream
Métodos | Descripciones |
---|---|
finalize() | garantiza que el close() el método se llama |
mark() | marca la posición en el flujo de entrada hasta la que se han leído los datos |
reset() | devuelve el control al punto en el flujo de entrada donde se estableció la marca |
markSupported() | comprueba si el flujo de entrada es compatible con mark() y reset() |
Para obtener más información, visite Java ByteArrayInputStream (documentación oficial de Java).
Java