Remi, > The other reason to have read that returns 0 is if the underlying channel is > in non-blocking mode. > A read on an InputStream created by Channels.newInputStream on a > SelectableChannel may return 0 > and the code will go in a loop until the SelectableChannel can read something. > while(read() > 0) avoid that issue.
It doesn't seem possible as far as I can see. We have 2 methods in java.nio.channels.Channels: newInputStream(java.nio.channels.ReadableByteChannel) newInputStream(java.nio.channels.AsynchronousByteChannel) Neither ReadableByteChannel nor AsynchronousByteChannel is SelectableChannel. Sorry, I might be missing something. Anyway, it would be a misbehaving InputStream as it doesn't conform to the spec.