ZipInputStream#readAllBytes should clarify it doesn't read the whole stream?
Jaikiran Pai
jai.forums2013 at gmail.com
Fri Feb 26 02:12:26 UTC 2021
I just created https://bugs.openjdk.java.net/browse/JDK-8262435 to track
this.
-Jaikiran
On 25/02/21 9:05 pm, Jaikiran Pai wrote:
>
> Thank you Lance and Alan. I do have access to JBS, I'll file one
> tomorrow with the details.
>
> -Jaikiran
>
> On 25/02/21 9:04 pm, Lance Andersen wrote:
>> Hi Jaikiran,
>>
>> Yes I believe this makes sense.
>>
>> It would also require a CSR.
>>
>> I can login a bug if you do not have access to do so.
>>
>> Best
>> Lance
>>
>>> On Feb 24, 2021, at 10:56 PM, Jaikiran Pai <jai.forums2013 at gmail.com
>>> <mailto:jai.forums2013 at gmail.com>> wrote:
>>>
>>> The javadoc of InputStream#readAllBytes() states[1] that it reads
>>> all the remaining bytes of the stream. The
>>> java.util.zip.ZipInputStream doesn't override this method and thus
>>> "inherits" this javadoc. The implementation of
>>> InputStream#readAllBytes() ultimately ends up calling
>>> ZipInputStream#read()[2], so the implementation correctly reads only
>>> till the end of the current ZipEntry and not the entire
>>> ZipInputStream. However, because the javadoc gets inherited, reading
>>> any code like the following doesn't make it clear that it's only
>>> reading till the end of the current entry:
>>>
>>> zis = ... // ZipInputStream
>>> while ((e = zis.getNextEntry()) != null) {
>>> String name = e.getName();
>>> zis.readAllBytes(); // gives an impression that all bytes of the
>>> stream are read
>>> ...
>>> }
>>>
>>> Should the ZipInputStream override the readAllBytes(), just so as to
>>> add a very specific javadoc to this method which explains that it
>>> reads only till the end of current entry and other related
>>> semantics? Perhaps the same should be done for
>>> ZipInputStream#readNBytes(...)?
>>>
>>>
>>> [1]
>>> https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/io/InputStream.html#readAllBytes()
>>> <https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/io/InputStream.html#readAllBytes()>
>>> [2]
>>> https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/util/zip/ZipInputStream.html#read(byte%5B%5D,int,int)
>>> <https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/util/zip/ZipInputStream.html#read(byte%5B%5D,int,int)>
>>>
>>> -Jaikiran
>>>
>>
>>
>>
>>
>> Lance Andersen| Principal Member of Technical Staff | +1.781.442.2037
>> Oracle Java Engineering
>> 1 Network Drive
>> Burlington, MA 01803
>> Lance.Andersen at oracle.com <mailto:Lance.Andersen at oracle.com>
>>
>>
>>
More information about the core-libs-dev
mailing list