Package org.apache.commons.compress.archivers

# Class ArchiveInputStream<E extends ArchiveEntry>

java.lang.Object
java.io.InputStream
org.apache.commons.compress.archivers.ArchiveInputStream<E>

Type Parameters:
  `E` - The type of `ArchiveEntry` produced.

All Implemented Interfaces:
  `Closeable`, `AutoCloseable`

Direct Known Subclasses:
  `ArArchiveInputStream`, `ArjArchiveInputStream`, `CpioArchiveInputStream`, `DumpArchiveInputStream`, `TarArchiveInputStream`, `ZipArchiveInputStream`

public abstract class ArchiveInputStream<E extends ArchiveEntry> 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
  Description
  `ArchiveInputStream()`

- ## Method Summary

  Modifier and Type
  Method
  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 E`
  `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 Details

  - ### ArchiveInputStream

    public ArchiveInputStream()

- ## Method Details

  - ### 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

  - ### 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

  - ### getBytesRead

    public long getBytesRead()
    Returns the current number of bytes read from this stream.
    Returns:
      the number of read bytes
    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

  - ### getNextEntry

    public abstract E 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

  - ### pushedBackBytes

    protected void pushedBackBytes(long pushedBack)
    Decrements the counter of already read bytes.
    Parameters:
      `pushedBack` - the number of bytes pushed back.
    Since:
      1.1

  - ### 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