I am working with a DataInputStream and had a question about EOFExceptions.
According to java docs:
Signals that an end of file or end of st
EOFException is a subclass of IOException. It will be thrown if you attempt to read from the stream and there is no more data to be read (e.g. because your DataInputStream is wrapped around a FileInputStream and you're trying to read more bytes than are left in the file).
When you reach the end of a stream (end of file, or peer closes the connection):
read()
returns -1readLine()
returns nullreadXXX()
for any other X throws EOFException
.The stream is still open, but you should stop reading from it and close it.
The key word is unexpected.
If you use DataInputStream and read a 4 byte integer but there were only 3 bytes remaining in the stream you'll get an EOFException.
But if you call read() at the end of stream you'll just get -1 back and no exception.
EOFException is thrown:
Answering another part of your question: Yes, EOF means that no more data will be seen on the stream; you should close it.