Método ByteArrayInputStream read() en Java con ejemplos

El método read() de la clase ByteArrayInputStream en Java se usa de dos maneras:

1. El método read() de la clase ByteArrayInputStream en Java se usa para leer el siguiente byte de ByteArrayInputStream. Este método read() devuelve el byte que se lee en forma de un número entero y si el flujo de entrada finaliza, este método devuelve -1. Este método lee un byte a la vez del flujo.

Sintaxis:

public int read()

Especificado por: este método está especificado por el método read() de la clase InputStream .

Parámetros: Este método no acepta ningún parámetro.

Valor devuelto: este método devuelve el byte leído en forma de un número entero. Si la secuencia finaliza, devuelve -1.

Excepciones: este método no arroja ninguna excepción.

El siguiente programa ilustra el método read() en la clase ByteArrayInputStream en el paquete IO:

Programa:

// Java program to illustrate
// ByteArrayInputStream read() method
  
import java.io.*;
  
public class GFG {
    public static void main(String[] args)
        throws Exception
    {
  
        // Create byte array
        byte[] buf = { 71, 69, 69, 75, 83 };
  
        // Create byteArrayInputStream
        ByteArrayInputStream byteArrayInputStr
            = new ByteArrayInputStream(buf);
  
        int b = 0;
        while ((b = byteArrayInputStr.read()) != -1) {
            // Convert byte to character
            char ch = (char)b;
  
            // Print the character
            System.out.println("Char : " + ch);
        }
    }
}
Producción:

Char : G
Char : E
Char : E
Char : K
Char : S

2. El método read(byte[ ], int, int) de la clase ByteArrayInputStream en Java se usa para leer el número dado de bytes en la array de bytes dada desde ByteArrayOutputStream. Este método es diferente del método read() anterior, ya que puede leer varios bytes a la vez. Devuelve el número total de bytes leídos como valor de retorno.

Sintaxis:

public void read(byte[ ] b,
                 int offset,
                 int length)

Anulaciones: este método anula el método read() de la clase InputStream .

Parámetros: Este método acepta tres parámetros:

  • b : representa la array de bytes en la que se leen los datos.
  • offset : representa el índice de inicio en la array de bytes b.
  • length – Representa el número de bytes a leer.

Valor devuelto: este método devuelve el número total de bytes leídos en el búfer. Si finaliza el flujo de entrada, este método devuelve -1.

Excepciones:

  • NullPointerException : este método arroja NullPointerException si la array de bytes b es nula.
  • IndexOutOfBoundsException : este método genera una excepción IndexOutOfBoundsException si la longitud es mayor que la longitud del flujo de entrada después de la compensación o la compensación es negativa o la longitud es negativa.

El siguiente programa ilustra el método read(byte[ ], int, int) en la clase ByteArrayInputStream en el paquete IO:

Programa:

// Java program to illustrate
// ByteArrayInputStream
// read(byte[ ], int, int) method
  
import java.io.*;
  
public class GFG {
    public static void main(String[] args)
        throws Exception
    {
  
        // Create byte array
        byte[] buf = { 71, 69, 69, 75, 83 };
  
        // Create byteArrayInputStream
        ByteArrayInputStream byteArrayInputStr
            = new ByteArrayInputStream(buf);
  
        // Create buffer
        byte[] b = new byte[4];
  
        int total_bytes
            = byteArrayInputStr.read(b, 1, 3);
  
        // Total number of bytes read
        System.out.println("Total bytes read: "
                           + total_bytes);
  
        for (byte ch : b) {
  
            // Print the character
            if (ch == 0)
                System.out.println("NULL");
  
            else
                System.out.println((char)ch);
        }
    }
}
Producción:

Total bytes read: 3
NULL
G
E
E

Referencias:
1. https://docs.oracle.com/javase/10/docs/api/java/io/ByteArrayInputStream.html#read()
2. https://docs.oracle.com/javase/10/docs /api/java/io/ByteArrayInputStream.html#read(byte%5B%5D, int, int)

Publicación traducida automáticamente

Artículo escrito por pp_pankaj y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *