Index: src/main/java/org/apache/commons/compress/archivers/zip/ZipFile.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>ISO-8859-1
===================================================================
--- src/main/java/org/apache/commons/compress/archivers/zip/ZipFile.java	(revision 12d9048c6c09ab622f389c2550d0668dc7ad26dc)
+++ src/main/java/org/apache/commons/compress/archivers/zip/ZipFile.java	(revision )
@@ -220,6 +220,23 @@
     }
 
     /**
+     * Opens the given channel for reading, assuming "UTF8" for file names.
+     *
+     * <p>{@link
+     * org.apache.commons.compress.utils.SeekableInMemoryByteChannel}
+     * allows you to read from an in-memory archive.</p>
+     *
+     * @param channel the archive.
+     *
+     * @throws IOException if an error occurs while reading the file.
+     * @since 1.13
+     */
+    public ZipFile(final SeekableByteChannel channel)
+            throws IOException {
+        this(channel, "unknown archive", ZipEncodingHelper.UTF8, true);
+    }
+
+    /**
      * Opens the given channel for reading, assuming the specified
      * encoding for file names.
      *
Index: src/test/java/org/apache/commons/compress/archivers/sevenz/SevenZFileTest.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>ISO-8859-1
===================================================================
--- src/test/java/org/apache/commons/compress/archivers/sevenz/SevenZFileTest.java	(revision 12d9048c6c09ab622f389c2550d0668dc7ad26dc)
+++ src/test/java/org/apache/commons/compress/archivers/sevenz/SevenZFileTest.java	(revision )
@@ -248,8 +248,7 @@
         try (FileInputStream fis = new FileInputStream(getFile("bla.7z"))) {
             data = IOUtils.toByteArray(fis);
         }
-        try (SevenZFile sevenZFile = new SevenZFile(new SeekableInMemoryByteChannel(data),
-                                                    null)) {
+        try (SevenZFile sevenZFile = new SevenZFile(new SeekableInMemoryByteChannel(data))) {
             final Iterable<SevenZArchiveEntry> entries = sevenZFile.getEntries();
             final Iterator<SevenZArchiveEntry> iter = entries.iterator();
             SevenZArchiveEntry entry = iter.next();
Index: src/site/xdoc/examples.xml
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- src/site/xdoc/examples.xml	(revision 12d9048c6c09ab622f389c2550d0668dc7ad26dc)
+++ src/site/xdoc/examples.xml	(revision )
@@ -291,6 +291,17 @@
 }
 ]]></source>
 
+          <p>Reading entries from an in-memory zip archive using
+              <code>SeekableInMemoryByteChannel</code> and <code>ZipFile</code> class:</p>
+<source><![CDATA[
+byte[] inputData; // zip archive contents
+SeekableInMemoryByteChannel inMemoryByteChannel = new SeekableInMemoryByteChannel(inputData);
+ZipFile zipFile = new ZipFile(inMemoryByteChannel);
+ZipArchiveEntry archiveEntry = zipFile.getEntry("entryName");
+InputStream inputStream = zipFile.getInputStream(archiveEntry);
+inputStream.read() // read data from the input stream
+]]></source>
+
           <p>Creating a zip file with multiple threads:</p>
 
           A simple implementation to create a zip file might look like this:
@@ -580,7 +591,7 @@
         Commons Compress compared to the native 7z executable.</p>
 
         <p>Reading or writing requires a
-        <code>SeekableByteChannel</code> that will be obtain
+        <code>SeekableByteChannel</code> that will be obtained
         transparently when reading from or writing to a file. The
         class
         <code>org.apache.commons.compress.utils.SeekableInMemoryByteChannel</code>
@@ -605,6 +616,15 @@
 LOOP UNTIL entry.getSize() HAS BEEN READ {
     sevenZFile.read(content, offset, content.length - offset);
 }
+]]></source>
+
+          <p>Uncompressing a given in-memory 7z archive:</p>
+          <source><![CDATA[
+byte[] inputData; // 7z archive contents
+SeekableInMemoryByteChannel inMemoryByteChannel = new SeekableInMemoryByteChannel(inputData);
+SevenZFile sevenZFile = new SevenZFile(inMemoryByteChannel);
+SevenZArchiveEntry entry = sevenZFile.getNextEntry();
+sevenZFile.read();  // read current entry's data
 ]]></source>
       </subsection>
 
Index: src/main/java/org/apache/commons/compress/utils/SeekableInMemoryByteChannel.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>ISO-8859-1
===================================================================
--- src/main/java/org/apache/commons/compress/utils/SeekableInMemoryByteChannel.java	(revision 12d9048c6c09ab622f389c2550d0668dc7ad26dc)
+++ src/main/java/org/apache/commons/compress/utils/SeekableInMemoryByteChannel.java	(revision )
@@ -27,6 +27,11 @@
 
 /**
  * A {@link SeekableByteChannel} implementation that wraps a byte[].
+ *
+ * <p>When this channel is used for writing an internal buffer grows to accommodate
+ * incoming data. A natural size limit is the value of {@link Integer#MAX_VALUE}.
+ * Internal buffer can be accessed via {@link SeekableInMemoryByteChannel#array()}.</p>
+ *
  * @since 1.13
  * @NotThreadSafe
  */
@@ -36,15 +41,37 @@
     private final AtomicBoolean closed = new AtomicBoolean();
     private int position, size;
 
+    /**
+     * Constructor taking a byte array.
+     *
+     * <p>This constructor is intended to be used with pre-allocated buffer or when
+     * reading from a given byte array.</p>
+     *
+     * @param data input data or pre-allocated array.
+     */
     public SeekableInMemoryByteChannel(byte[] data) {
         this.data = data;
         size = data.length;
     }
 
+    /**
+     * Parameterless constructor - allocates internal buffer by itself.
+     */
     public SeekableInMemoryByteChannel() {
         this(new byte[0]);
     }
 
+    /**
+     * Constructor taking a size of storage to be allocated.
+     *
+     * <p>Creates a channel and allocates internal storage of a given size.</p>
+     *
+     * @param size size of internal buffer to allocate, in bytes.
+     */
+    public SeekableInMemoryByteChannel(int size) {
+        this(new byte[size]);
+    }
+
     @Override
     public long position() {
         return position;
@@ -116,6 +143,12 @@
 
     /**
      * Obtains the array backing this channel.
+     *
+     * <p>NOTE:
+     * The returned buffer is not aligned with containing data, use
+     * {@link #size()} to obtain the size of data stored in the buffer.</p>
+     *
+     * @return internal byte array.
      */
     public byte[] array() {
         return data;
Index: src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZFile.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>ISO-8859-1
===================================================================
--- src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZFile.java	(revision 12d9048c6c09ab622f389c2550d0668dc7ad26dc)
+++ src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZFile.java	(revision )
@@ -109,6 +109,21 @@
      * allows you to read from an in-memory archive.</p>
      *
      * @param channel the channel to read
+     * @throws IOException if reading the archive fails
+     * @since 1.13
+     */
+    public SevenZFile(final SeekableByteChannel channel) throws IOException {
+        this(channel, "unknown archive", null);
+    }
+
+    /**
+     * Reads a SeekableByteChannel as 7z archive
+     *
+     * <p>{@link
+     * org.apache.commons.compress.utils.SeekableInMemoryByteChannel}
+     * allows you to read from an in-memory archive.</p>
+     *
+     * @param channel the channel to read
      * @param password optional password if the archive is encrypted -
      * the byte array is supposed to be the UTF16-LE encoded
      * representation of the password.
