Java ByteArrayInputStream (con ejemplos)

En este tutorial, aprenderemos sobre Java ByteArrayInputStream y sus métodos con la ayuda de ejemplos.

La ByteArrayInputStreamclase del java.iopaquete se puede utilizar para leer una matriz de datos de entrada (en bytes).

Extiende la InputStreamclase 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.ByteArrayInputStreamprimero 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 arrmatriz. 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 ByteArrayInputStreamclase proporciona implementaciones para diferentes métodos presentes en la InputStreamclase.

Método read ()

  • read() - lee el byte único de la matriz presente en el flujo de entrada
  • read(byte() array) - lee bytes del flujo de entrada y los almacena en la matriz especificada
  • read(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,

  1. Hemos utilizado el available()método para verificar el número de bytes disponibles en el flujo de entrada.
  2. Luego, usamos el read()método 2 veces para leer 2 bytes del flujo de entrada.
  3. 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 ByteArrayInputStreamclase. 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).

Articulos interesantes...