[ 
https://issues.apache.org/jira/browse/COMPRESS-505?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17050990#comment-17050990
 ] 

Peter Alfred Lee commented on COMPRESS-505:
-------------------------------------------

This is a problem caused by the random access of 7z(which was published by me).

I'm working on this. I'll push a PR on github and update this issue.

> Multiple Reads of One SevenZArchiveEntry Fails
> ----------------------------------------------
>
>                 Key: COMPRESS-505
>                 URL: https://issues.apache.org/jira/browse/COMPRESS-505
>             Project: Commons Compress
>          Issue Type: Bug
>    Affects Versions: 1.20
>            Reporter: Steven Fontaine
>            Priority: Minor
>         Attachments: CC0 Images.7z
>
>
> I've run into a bug which occurs when attempting to read the same 
> SevenZArchiveEntry stream multiple times. The following code illustrates the 
> problem.
> {code:java}
> File archive = new File("CC0 Images.7z");
> char[] password = "password".toCharArray();
> try (SevenZFile f = new SevenZFile(archive, password))
> {
>   SevenZArchiveEntry entry = 
> StreamSupport.stream(f.getEntries().spliterator(), false)
>     .filter(e -> 
> "alberta-amazing-attraction-banff-417074.jpg".equals(e.getName()))
>     .findFirst().orElseGet(null);
>   assert entry != null;
>   for (int i = 0; i < 100; i++)
>   {
>     InputStream is = f.getInputStream(entry);
>     BufferedImage img = ImageIO.read(is);
>     assert img != null;
>     System.out.println("Succeeded " + (i + 1) + " times");
>   }
> }{code}
> Below is the output I receive on version 1.20
> {code:java}
> Succeeded 1 times
> Succeeded 2 times
> Exception in thread "main" java.io.IOException: Checksum verification failed
>     at 
> org.apache.commons.compress.utils.ChecksumVerifyingInputStream.read(ChecksumVerifyingInputStream.java:61)
>     at 
> org.apache.commons.compress.utils.ChecksumVerifyingInputStream.skip(ChecksumVerifyingInputStream.java:102)
>     at org.apache.commons.compress.utils.IOUtils.skip(IOUtils.java:113)
>     at 
> org.apache.commons.compress.archivers.sevenz.SevenZFile.getCurrentStream(SevenZFile.java:1318)
>     at 
> org.apache.commons.compress.archivers.sevenz.SevenZFile.getInputStream(SevenZFile.java:1354)
>     at org.abitoff.dmav.Test.main(Test.java:11)
> {code}
>  
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to