# ArchiveInputStream (Apache Commons Compress 1.13 API)

org.apache.commons.compress.archivers

## Class ArchiveInputStream

- java.lang.Object
- - java.io.InputStream
  - - org.apache.commons.compress.archivers.ArchiveInputStream

- All Implemented Interfaces:
    Closeable, AutoCloseable
  Direct Known Subclasses:
    ArArchiveInputStream, ArjArchiveInputStream, CpioArchiveInputStream, DumpArchiveInputStream, TarArchiveInputStream, ZipArchiveInputStream

      public abstract class ArchiveInputStream
      extends InputStream

  Archive input streams MUST override the `InputStream.read(byte[], int, int)` - or `read()` - method so that reading from the stream generates EOF for the end of data in each entry as well as at the end of the file proper.

  The `getNextEntry()` method is used to reset the input stream ready for reading the data from the next entry.

  The input stream classes must also implement a method with the signature:

       public static boolean matches(byte[] signature, int length)

  which is used by the `ArchiveStreamFactory` to autodetect the archive type from the first few bytes of a stream.

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `ArchiveInputStream()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `canReadEntryData(ArchiveEntry archiveEntry)` Whether this stream is able to read the given entry.
    `protected void` | `count(int read)` Increments the counter of already read bytes.
    `protected void` | `count(long read)` Increments the counter of already read bytes.
    `long` | `getBytesRead()` Returns the current number of bytes read from this stream.
    `int` | `getCount()` Deprecated. this method may yield wrong results for large archives, use #getBytesRead instead
    `abstract ArchiveEntry` | `getNextEntry()` Returns the next Archive Entry in this Stream.
    `protected void` | `pushedBackBytes(long pushedBack)` Decrements the counter of already read bytes.
    `int` | `read()` Reads a byte of data.

    - ### Methods inherited from class java.io.InputStream

      `available, close, mark, markSupported, read, read, reset, skip`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### ArchiveInputStream

          public ArchiveInputStream()

  - ### Method Detail

    - #### getNextEntry

          public abstract ArchiveEntry getNextEntry()
                                             throws IOException

      Returns the next Archive Entry in this Stream.
      Returns:
        the next entry, or `null` if there are no more entries
      Throws:
        `IOException` - if the next entry could not be read

    - #### read

          public int read()
                   throws IOException

      Reads a byte of data. This method will block until enough input is available. Simply calls the `InputStream.read(byte[], int, int)` method. MUST be overridden if the `InputStream.read(byte[], int, int)` method is not overridden; may be overridden otherwise.
      Specified by:
        `read` in class `InputStream`
      Returns:
        the byte read, or -1 if end of input is reached
      Throws:
        `IOException` - if an I/O error has occurred

    - #### count

          protected void count(int read)

      Increments the counter of already read bytes. Doesn't increment if the EOF has been hit (read == -1)
      Parameters:
        `read` - the number of bytes read

    - #### count

          protected void count(long read)

      Increments the counter of already read bytes. Doesn't increment if the EOF has been hit (read == -1)
      Parameters:
        `read` - the number of bytes read
      Since:
        1.1

    - #### pushedBackBytes

          protected void pushedBackBytes(long pushedBack)

      Decrements the counter of already read bytes.
      Parameters:
        `pushedBack` - the number of bytes pushed back.
      Since:
        1.1

    - #### getCount

          @Deprecated
          public int getCount()

      Deprecated. this method may yield wrong results for large archives, use #getBytesRead instead
      Returns the current number of bytes read from this stream.
      Returns:
        the number of read bytes

    - #### getBytesRead

          public long getBytesRead()

      Returns the current number of bytes read from this stream.
      Returns:
        the number of read bytes
      Since:
        1.1

    - #### canReadEntryData

          public boolean canReadEntryData(ArchiveEntry archiveEntry)

      Whether this stream is able to read the given entry.

      Some archive formats support variants or details that are not supported (yet).

      Parameters:
        `archiveEntry` - the entry to test
      Returns:
        This implementation always returns true.
      Since:
        1.1

Copyright © 2016 The Apache Software Foundation. All rights reserved.