From the API the method write(int byte) should take an int representing a byte so in that way it when EOF comes it can return -1. However it's possible doing the following thing:
FileOutputStream fi = new FileOutputStream(file);
fi.write(100000);
I expected to not compile as the number exceeds the byte range. How does the JVM interpret it exactly? Thanks in advance.
From the OutputStream.write(int)
doc:
Writes the specified byte to this output stream. The general contract for write is that one byte is written to the output stream. The byte to be written is the eight low-order bits of the argument b. The 24 high-order bits of b are ignored.
Emphasis mine.
Note that the method takes an int
. And since 100000 is a valid integer literal, there is no point of it being not compiling.