Java FileInputStream ObjectInputStream reaches end of file EOF
file-io, fileinputstream, java, objectinputstream
Solution
`readObject()` doesn't return `null` at EOF. You could catch the `EOFException` and interpret it as EOF, but this would fail to distinguish a normal EOF from a file that has been truncated.
A better approach would be to use some meta-data. That is, rather than asking the `ObjectInput` how many objects are in the stream, you should store the count somewhere. For example, you could create a meta-data class that records the count and other meta-data and store an instance as the first object in each file. Or you could create a special EOF marker class and store an instance as the last object in each file.
Problem
I am trying to read the number of line in a binary file using readObject, but I get IOException EOF. Am I doing this the right way? ``` FileInputStream istream = new FileInputStream(fileName); ObjectInputStream ois = new ObjectInputStream(istream); /** calculate number of items **/ int line_count = 0; while( (String)ois.readObject() != null){ line_count++; } ```