java - recibir - DataInputStream.read() vs DataInputStream.readFully()
sockets java examples (1)
Estoy haciendo una aplicación de socket TCP / IP simple
¿Cuál es la diferencia entre hacer esto?
DataInputStream in = new DataInputStream(clientSocket.getInputStream());
byte[] buffer = new byte[100];
in.readFully(buffer);
versus hacer esto:
DataInputStream in = new DataInputStream(clientSocket.getInputStream());
byte[] buffer = new byte[100];
in.read(buffer);
Eché un vistazo a la documentación, tienen la misma descripción exacta. readFully()
y read()
Entonces, ¿puedo suponer que es lo mismo?
El Javadoc para DataInput.readFully(byte[] b)
establece:
Lee algunos bytes de una secuencia de entrada y los almacena en la matriz de memoria intermedia
b
. El número de bytes leídos es igual a la longitud deb
.
El Javadoc para DataInputStream.read(byte[] b)
establece:
Lee una cierta cantidad de bytes de la secuencia de entrada contenida y los almacena en la matriz de memoria intermedia
b
. La cantidad de bytes realmente leídos se devuelve como un número entero. Este método bloquea hasta que los datos de entrada estén disponibles, se haya detectado el final del archivo o se haya lanzado una excepción .
Básicamente, readFully()
leerá exactamente b.length
bytes, mientras que read()
leerá hasta b.length
, quizás menos, lo que esté disponible desde la secuencia de entrada.