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
methods
seems like to too much clutter in the API and the methods appear too
similar.
The (at most) readNBytes method provides the needed functionality of
allocating/reallocating
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