Método DataInputStream read() en Java con ejemplos

El método read() de la clase DataInputStream en Java es de dos tipos:

  1. El método read(byte[] b) de la clase DataInputStream en Java se usa para leer bytes del flujo de entrada y almacenarlos en la array de bytes del búfer. Este método read() devuelve el número de bytes realmente leídos como un tipo entero. Este método devuelve -1 si el flujo de entrada finaliza y no hay más datos disponibles para leer. Este método lanza una excepción si la array de bytes es nula.

    Sintaxis:

    public final int read(byte[] b)
                   throws IOException
    

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

    Parámetros: este método acepta un parámetro b que representa la array de bytes en la que se leerán los datos.

    Valor devuelto: este método devuelve el número de bytes realmente leídos. Devuelve -1 si el flujo de entrada finaliza y no hay más datos disponibles para leer.

    Excepciones:

    • NullPointerException : lanza NullPointerException si la array de bytes es nula.
    • IOException : este método lanza IOException si la secuencia se cierra o se produce algún otro error de E/S.

    El siguiente programa ilustra el método de lectura (byte []) en la clase DataInputStream en el paquete IO:

    Programa: Suponga la existencia del archivo “c:/demo.txt”.

    // Java program to illustrate
    // DataInputStream read(byte[]) method
    import java.io.*;
    public class GFG {
        public static void main(String[] args)
            throws IOException
        {
      
            // Create input stream 'demo.txt'
            // for reading containing
            // text "GEEKSFORGEEKS"
            FileInputStream inputStream
                = new FileInputStream(
                    "c:/demo.txt");
      
            // Convert inputStream to
            // DataInputStream
            DataInputStream dataInputStr
                = new DataInputStream(
                    inputStream);
      
            // Count the total bytes
            // form the input stream
            int count = inputStream.available();
      
            // Create byte array
            byte[] b = new byte[count];
      
            // Read data into byte array
            int bytes = dataInputStr.read(b);
      
            // Print number of bytes
            // actually read
            System.out.println(bytes);
      
            for (byte by : b) {
                // Print the character
                System.out.print((char)by);
            }
        }
    }
    Aporte:
    Producción:
  2. El método read(byte[] b, int offset, int length) de la clase DataInputStream en Java se usa para leer el número específico de bytes del flujo de entrada y almacenarlos en la array de bytes del búfer. Este método read() devuelve el número de bytes en realidad se lee como un tipo entero. Este método devuelve -1 si el flujo de entrada finaliza y no hay más datos disponibles para leer. Este método lanza una excepción si la array de bytes es nula.

    Sintaxis:

    public final int read(byte[] b,
                          int offset,
                          int length)
                   throws IOException
    

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

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

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

    Valor devuelto: este método devuelve el número de bytes realmente leídos. Devuelve -1 si el flujo de entrada finaliza y no hay más datos disponibles para leer.

    Excepciones:

    • NullPointerException : lanza NullPointerException si la array de bytes es nula.
    • IndexOutOfBoundsException : arroja IndexOutOfBoundsException si el desplazamiento es negativo o la longitud es negativa o la longitud es mayor que la diferencia de longitud de la array de bytes y el desplazamiento.
    • IOException : este método lanza IOException si la secuencia se cierra o se produce algún otro error de E/S.

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

    Programa: Suponga la existencia del archivo “c:/demo.txt”.

    // Java program to illustrate
    // DataInputStream read(byte[], int, int) method
    import java.io.*;
    public class GFG {
        public static void main(String[] args)
            throws IOException
        {
      
            // Create input stream 'demo.txt'
            // for reading containing
            // text "GEEKSFORGEEKS"
            FileInputStream inputStream
                = new FileInputStream(
                    "c:/demo.txt");
      
            // Convert inputStream to
            // DataInputStream
            DataInputStream dataInputStr
                = new DataInputStream(
                    inputStream);
      
            // Count the total bytes
            // form the input stream
            int count = inputStream.available();
      
            // Create byte array
            byte[] b = new byte[count];
      
            // Read data into byte array
            int bytes = dataInputStr.read(b, 4, 5);
      
            // Print number of bytes
            // actually read
            System.out.println(bytes);
      
            for (byte by : b) {
                // Print the character
                System.out.print((char)by);
            }
        }
    }
    Aporte:
    Producción:

Referencias:
1. https://docs.oracle.com/javase/10/docs/api/java/io/DataInputStream.html#read(byte%5B%5D)
2. https://docs.oracle.com/ javase/10/docs/api/java/io/DataInputStream.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 *