commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Fabian Lange (JIRA)" <j...@apache.org>
Subject [jira] [Created] (COMPRESS-277) IOUtils.skip does not work as advertised
Date Fri, 11 Apr 2014 11:09:19 GMT
Fabian Lange created COMPRESS-277:
-------------------------------------

             Summary: IOUtils.skip does not work as advertised
                 Key: COMPRESS-277
                 URL: https://issues.apache.org/jira/browse/COMPRESS-277
             Project: Commons Compress
          Issue Type: Bug
            Reporter: Fabian Lange


I am trying to feed a TarInputStream from a CipherInputStream.
It does not work, because IOUtils.skip() does not adhere to the contract it claims in javadoc:

"     * <p>This method will only skip less than the requested number of
     * bytes if the end of the input stream has been reached.</p>"

However it does:

            long skipped = input.skip(numToSkip);
            if (skipped == 0) {
                break;
            }

And the input stream javadoc says:

"     * This may result from any of a number of conditions; reaching end of file
     * before <code>n</code> bytes have been skipped is only one possibility."

In the case of CipherInputStream, it stops at the end of each byte buffer.

If you check the IOUtils from colleagues at commons-io, they have considered this case in
IOUtils.skip() where they use a read to skip through the stream.
An optimized version could combine trying to skip, then read then trying to skip again.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Mime
View raw message