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

Java ByteArrayInputStream: Guía Práctica para Leer Arrays de Bytes

Java ByteArrayInputStream

Este artículo explica cómo usar ByteArrayInputStream de Java para leer datos de arrays de bytes, cubriendo constructores, métodos clave y ejemplos prácticos.

¿Qué es ByteArrayInputStream?

La clase ByteArrayInputStream, parte del paquete java.io, implementa InputStream y te permite tratar un array de bytes como un flujo de entrada. Internamente almacena una copia del array suministrado, permitiendo acceso aleatorio y lectura eficiente.

Nota: El flujo lee del array mismo, no de una fuente externa, por lo que todas las operaciones son basadas en memoria.

Crear un ByteArrayInputStream

Importa java.io.ByteArrayInputStream e instáncialo. Puedes leer todo el array o una porción.

ByteArrayInputStream entrada = new ByteArrayInputStream(byte[] arr);
ByteArrayInputStream entrada = new ByteArrayInputStream(byte[] arr, int inicio, int longitud);

El segundo constructor lee longitud bytes comenzando en el índice inicio.

Métodos Principales

read()

Ejemplo: Leyendo Bytes

import java.io.ByteArrayInputStream;

public class Main {
    public static void main(String[] args) {
        byte[] array = {1, 2, 3, 4};
        try (ByteArrayInputStream entrada = new ByteArrayInputStream(array)) {
            System.out.print("Bytes leídos: ");
            int valor;
            while ((valor = entrada.read()) != -1) {
                System.out.print(valor + ", ");
            }
            System.out.println();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Salida

Bytes leídos: 1, 2, 3, 4, 

available()

Retorna el número de bytes aún disponibles sin bloqueo.

import java.io.ByteArrayInputStream;

public class Main {
    public static void main(String[] args) {
        byte[] array = {1, 2, 3, 4};
        try (ByteArrayInputStream entrada = new ByteArrayInputStream(array)) {
            System.out.println("Inicialmente: " + entrada.available());
            entrada.read();
            entrada.read();
            System.out.println("Después de 2 lecturas: " + entrada.available());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Salida

Inicialmente: 4
Después de 2 lecturas: 2

skip()

Avanza la posición del flujo por el número solicitado de bytes.

import java.io.ByteArrayInputStream;

public class Main {
    public static void main(String[] args) {
        byte[] array = {1, 2, 3, 4};
        try (ByteArrayInputStream entrada = new ByteArrayInputStream(array)) {
            entrada.skip(2);
            System.out.print("Después de skip: ");
            int valor;
            while ((valor = entrada.read()) != -1) {
                System.out.print(valor + ", ");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Salida

Después de skip: 3, 4, 

close()

Cerrar un ByteArrayInputStream es una operación sin efecto; el flujo aún puede usarse después. El método está presente solo para compatibilidad de API.

Otros Métodos Útiles

MétodoDescripción
mark(int readlimit)Marca la posición actual.
reset()Retorna a la última posición marcada.
markSupported()Siempre retorna true.
finalize()Asegura que los recursos se liberen (sin efecto para esta clase).

Para la API completa, consulta la documentación oficial de Java.

Java

  1. Técnicas de Copia de Arrays en Java: Guía Completa
  2. Palabra clave final en Java: Variables, métodos y clases
  3. Operador instanceof en Java: Guía completa
  4. Entendiendo las clases anidadas estáticas en Java: Uso, diferencias y ejemplos
  5. Dominando las clases internas anónimas en Java: Definición, sintaxis y ejemplos prácticos
  6. Patrón Singleton en Java explicado: Cómo implementarlo y usarlo de forma segura
  7. Dominando la Reflexión en Java: Inspeccionando clases, métodos y campos en tiempo de ejecución
  8. Dominando ObjectOutputStream de Java: Serialización, Métodos y Ejemplos Prácticos
  9. Dominando Java Scanner: Guía Completa con Ejemplos Prácticos
  10. Dominando Java Generics: Construyendo Código Reutilizable y Type-Safe
  11. Dominando las operaciones de archivos en Java con java.io: creación, lectura, escritura y eliminación