RFR 8139206: Add InputStream readNBytes(int len)

Roger Riggs Roger.Riggs at Oracle.com
Mon Jan 22 14:16:50 UTC 2018

Hi Max,

Both methods that throw and not throw have been proposed. But adding two 
seems like to too much clutter in the API and the methods appear too 

The (at most) readNBytes method provides the needed functionality of 
the array and performing well.

For the cases where reading less than N is significant, the caller 
should be checking the
return length to validate it got the input it expected.

$.02, Roger

On 1/22/2018 5:42 AM, Weijun Wang wrote:
>> On Jan 22, 2018, at 5:01 PM, Weijun Wang <weijun.wang at oracle.com> wrote:
>> I wonder when readNBytes(n) will be useful if the return value has less than n bytes.
> I mean I have seen protocols saying reading rest of the content, or reading N bytes, but never reading at most N bytes. I would rather the method throwing an EOFException if there are less than N bytes. This is also what DataInput::readFully is doing.
> --Max
>>> On Jan 22, 2018, at 4:52 PM, Alan Bateman <Alan.Bateman at oracle.com> wrote:
>>> On 17/01/2018 16:24, Brian Burkhalter wrote:
>>>> :
>>>> A negative value of ‘len’ will now cause an IllegalArgumentException instead of an IndexOutOfBoundsException. Also some verbiage has been improved.
>>>> http://cr.openjdk.java.net/~bpb/8139206/webrev.01/
>>> The updated version looks good. I just wonde about the "For example ..." in the @throws OOME description. The API can't be called with a len > Integer.MAX_VALUE so this example could be confusing - I think just drop that sentence.
>>> Minor formatting in passing. At L128 and L339 it would be easier to read if the "throws IOException" were on the previous line. Also L355 might be a bit clear if the Math.min was indented (have to look twice to see that it's not in the while body).
>>> -Alan

More information about the core-libs-dev mailing list