Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Java

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()

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,

  1. Hemos utilizado el available() para comprobar el número de bytes disponibles en el flujo de entrada.
  2. Entonces hemos usado el read() método 2 veces para leer 2 bytes del flujo de entrada.
  3. 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

  1. Matrices de copia de Java
  2. Palabra clave final de Java
  3. Operador de instancia de Java
  4. Clase estática anidada de Java
  5. Clase anónima de Java
  6. Clase única de Java
  7. Reflexión Java
  8. Clase Java ObjectOutputStream
  9. Clase de escáner Java
  10. Genéricos de Java
  11. Clase de archivo Java