En este tutorial, aprenderemos sobre Java ByteArrayInputStream y sus métodos con la ayuda de ejemplos.
La ByteArrayInputStream
clase del java.io
paquete se puede utilizar para leer una matriz de datos de entrada (en bytes).
Extiende la 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.
Crear un ByteArrayInputStream
Para crear un flujo de entrada de matriz de bytes, java.io.ByteArrayInputStream
primero debemos importar el paquete. 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 de la arr
matriz. 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 la longitud de la matriz comenzando desde la posición inicial.
Métodos de ByteArrayInputStream
La ByteArrayInputStream
clase proporciona implementaciones para diferentes métodos presentes en la 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 la longitud del flujo y lo almacena en la matriz especificada comenzando desde el inicio de la posición
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
Los bytes leídos del flujo de entrada: 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 utilizado el read()
método.
disponible () Método
Para obtener el número 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
Bytes disponibles al principio: 4 Bytes disponibles al final: 2
En el ejemplo anterior,
- Hemos utilizado el
available()
método para verificar el número de bytes disponibles en el flujo de entrada. - Luego, usamos el
read()
método 2 veces para leer 2 bytes del flujo de entrada. - Ahora, después de leer los 2 bytes, hemos verificado los bytes disponibles. Esta vez, los bytes disponibles disminuyeron 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
Flujo de entrada después de omitir 2 bytes: 3, 4,
En el ejemplo anterior, hemos utilizado el método skip () 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 close ()
Para cerrar el flujo de entrada, podemos usar el close()
método.
Sin embargo, el close()
método no tiene ningún efecto en ByteArrayInputStream
clase. Podemos usar los métodos de esta clase incluso después de close()
llamar al método.
Otros métodos de ByteArrayInputStream
Métodos | Descripciones |
---|---|
finalize() | asegura que el close() método sea llamado |
mark() | marca la posición en el flujo de entrada hasta la cual 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 admite mark() yreset() |
Para obtener más información, visite Java ByteArrayInputStream (documentación oficial de Java).