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); } } }
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); } } }
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)