You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by bo...@apache.org on 2019/11/07 16:19:05 UTC

[commons-compress] 01/02: COMPRESS-342 record changes - see #83

This is an automated email from the ASF dual-hosted git repository.

bodewig pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-compress.git

commit 228e73995ea16cb247e5549fed727edfc3a28dce
Author: Stefan Bodewig <bo...@apache.org>
AuthorDate: Thu Nov 7 17:18:14 2019 +0100

    COMPRESS-342 record changes - see #83
---
 src/changes/changes.xml                               |  4 ++++
 .../commons/compress/archivers/sevenz/SevenZFile.java | 19 ++++++++++++++++---
 src/site/xdoc/examples.xml                            | 10 ++++++++++
 src/site/xdoc/index.xml                               | 13 +++----------
 4 files changed, 33 insertions(+), 13 deletions(-)

diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index abf85e6..ec4b18a 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -70,6 +70,10 @@ The <action> type attribute can be add,update,fix,remove.
         SevenZFile can now revover from a certain corruption that
         seems to happen occasinally when split archives are created.
       </action>
+      <action issue="COMPRESS-342" type="update" date="2019-11-07"
+              due-to="Peter Alfred Lee">
+        Added random access support to SevenZFile.
+      </action>
     </release>
     <release version="1.19" date="2019-08-27"
              description="Release 1.19
diff --git a/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZFile.java b/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZFile.java
index b73cf5c..0e7f0ec 100644
--- a/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZFile.java
+++ b/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZFile.java
@@ -1320,15 +1320,28 @@ public class SevenZFile implements Closeable {
         return deferredBlockStreams.get(0);
     }
 
+    /**
+     * Returns an InputStream for reading the contents of the given entry.
+     *
+     * <p>For archives using solid compression randomly accessing
+     * entries will be significantly slower than reading the archive
+     * sequentiallly.</p>
+     *
+     * @param entry the entry to get the stream for.
+     * @return a stream to read the entry from.
+     * @throws IOException if unable to create an input stream from the zipentry
+     * @since Compress 1.20
+     */
     public InputStream getInputStream(SevenZArchiveEntry entry) throws IOException {
         int entryIndex = -1;
-        for(int i = 0; i < this.archive.files.length;i++) {
-            if(entry == this.archive.files[i]) {
+        for (int i = 0; i < this.archive.files.length;i++) {
+            if (entry == this.archive.files[i]) {
                 entryIndex = i;
+                break;
             }
         }
 
-        if(entryIndex < 0) {
+        if (entryIndex < 0) {
             throw new IllegalArgumentException("Can not find " + entry.getName() + " in " + this.fileName);
         }
 
diff --git a/src/site/xdoc/examples.xml b/src/site/xdoc/examples.xml
index 488bbb5..957294e 100644
--- a/src/site/xdoc/examples.xml
+++ b/src/site/xdoc/examples.xml
@@ -420,6 +420,16 @@ LOOP UNTIL entry.getSize() HAS BEEN READ {
 }
 ]]></source>
 
+        <h4><a name="Random-Access to 7z Archives"></a>Random-Access to 7z Archives</h4>
+
+        <p>Prior to Compress 1.20 7z archives could only be read
+        sequentially. The
+        <code>getInputStream(SevenZArchiveEntry)</code> method
+        introduced with Compress 1.20 now provides random access but
+        at least when the archive uses solid compression random access
+        will likely be significantly slower than sequential
+        access.</p>
+
       </subsection>
 
       <subsection name="ar">
diff --git a/src/site/xdoc/index.xml b/src/site/xdoc/index.xml
index 18709b4..8b57f03 100644
--- a/src/site/xdoc/index.xml
+++ b/src/site/xdoc/index.xml
@@ -58,17 +58,10 @@
           of changes see the <a href="changes-report.html">Changes
           Report</a>.</p>
 
-          <subsection name="What's new in 1.19?">
+          <subsection name="What's new in 1.20?">
             <ul>
-              <li><code>ParallelScatterZipCreator</code> now writes
-              entries in the same order they have been added to the
-              archive.</li>
-              <li><code>ZipArchiveInputStream</code> and
-              <code>ZipFile</code> are more forgiving when parsing
-              extra fields by default now.</li>
-              <li><code>TarArchiveInputStream</code> has a new lenient
-              mode that may allow it to read certain broken
-              archives.</li>
+              <li><code>SevenZFile</code> now supports random
+              access.</li>
             </ul>
           </subsection>
         </section>