> On Jan 22, 2018, at 10:16 PM, Roger Riggs <roger.ri...@oracle.com> wrote: > > 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.
Sorry I wasn't aware of earlier discussions on this. My feeling is that readNBytesFully() is more useful than readNBytesAtMost(). > > The (at most) readNBytes method provides the needed functionality of > allocating/reallocating > the array and performing well. Sure, this is a good enhancement. I understand it's easy to add a check to readNBytesAtMost() to get the function of readNBytesFully(), and the reverse is not possible. > > 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. I've checked some of the codes I wrote and each time readNBytes() can be used I only want the return value to be of exactly N bytes. Thanks Max > > $.02, Roger > > On 1/22/2018 5:42 AM, Weijun Wang wrote: >>> On Jan 22, 2018, at 5:01 PM, Weijun Wang <weijun.w...@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.bate...@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 >