El método read() de la clase DataInputStream en Java es de dos tipos:
- 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);
}
}
}
- 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);
}
}
}
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)