Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

DataInputStream.read() vs DataInputStream.readFully()

Im making a simple TCP/IP Socket app

Whats the different between doing this:

DataInputStream in = new DataInputStream(clientSocket.getInputStream());

byte[] buffer = new byte[100];
in.readFully(buffer);

versus doing this:

DataInputStream in = new DataInputStream(clientSocket.getInputStream());

byte[] buffer = new byte[100];
in.read(buffer);

I had a look at the documentation, they have the same exact description. readFully() and read() So can I assume its the same thing?

like image 247
Krimson Avatar asked Sep 17 '14 18:09

Krimson


People also ask

What is the difference between DataInputStream and BufferedInputStream in Java?

DataInputStream is a kind of InputStream to read data directly as primitive data types. BufferedInputStream is a kind of inputStream that reads data from a stream and uses a buffer to optimize speed access to data. data is basicaly read ahead of time and this reduces disk or network access.

What is DataInputStream and Dataoutputstream in Java?

A data input stream lets an application read primitive Java data types from an underlying input stream in a machine-independent way. An application uses a data output stream to write data that can later be read by a data input stream.

What can I use instead of readLine in Java?

If you want to read text data (e.g. from the console) you should use a Reader of some description. To convert an InputStream into a Reader , use InputStreamReader . Then create a BufferedReader around the Reader , and you can read a line using BufferedReader. readLine() .


1 Answers

The Javadoc for DataInput.readFully(byte[] b) states:

Reads some bytes from an input stream and stores them into the buffer array b. The number of bytes read is equal to the length of b.

The Javadoc for DataInputStream.read(byte[] b) states:

Reads some number of bytes from the contained input stream and stores them into the buffer array b. The number of bytes actually read is returned as an integer. This method blocks until input data is available, end of file is detected, or an exception is thrown.

Basically, readFully() will read exactly b.length bytes, whereas read() will read up to b.length, maybe less, whatever is available from the input stream.

like image 138
Lolo Avatar answered Sep 30 '22 18:09

Lolo