org.apache.commons.compress.archivers

## Class ArchiveStreamFactory

- java.lang.Object
- - org.apache.commons.compress.archivers.ArchiveStreamFactory

-     public class ArchiveStreamFactory
      extends Object

  Factory to create Archive[In|Out]putStreams from names or the first bytes of the InputStream. In order to add other implementations, you should extend ArchiveStreamFactory and override the appropriate methods (and call their implementation from super of course). Compressing a ZIP-File:

       final OutputStream out = new FileOutputStream(output);
       ArchiveOutputStream os = new ArchiveStreamFactory().createArchiveOutputStream(ArchiveStreamFactory.ZIP, out);

       os.putArchiveEntry(new ZipArchiveEntry("testdata/test1.xml"));
       IOUtils.copy(new FileInputStream(file1), os);
       os.closeArchiveEntry();

       os.putArchiveEntry(new ZipArchiveEntry("testdata/test2.xml"));
       IOUtils.copy(new FileInputStream(file2), os);
       os.closeArchiveEntry();
       os.close();

  Decompressing a ZIP-File:

       final InputStream is = new FileInputStream(input);
       ArchiveInputStream in = new ArchiveStreamFactory().createArchiveInputStream(ArchiveStreamFactory.ZIP, is);
       ZipArchiveEntry entry = (ZipArchiveEntry)in.getNextEntry();
       OutputStream out = new FileOutputStream(new File(dir, entry.getName()));
       IOUtils.copy(in, out);
       out.close();
       in.close();

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static String` | `AR` Constant used to identify the AR archive format.
    `static String` | `ARJ` Constant used to identify the ARJ archive format.
    `static String` | `CPIO` Constant used to identify the CPIO archive format.
    `static String` | `DUMP` Constant used to identify the Unix DUMP archive format.
    `static String` | `JAR` Constant used to identify the JAR archive format.
    `static String` | `SEVEN_Z` Constant used to identify the 7z archive format.
    `static String` | `TAR` Constant used to identify the TAR archive format.
    `static String` | `ZIP` Constant used to identify the ZIP archive format.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ArchiveStreamFactory()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `ArchiveInputStream` | `createArchiveInputStream(InputStream in)` Create an archive input stream from an input stream, autodetecting the archive type from the first few bytes of the stream.
    `ArchiveInputStream` | `createArchiveInputStream(String archiverName, InputStream in)` Create an archive input stream from an archiver name and an input stream.
    `ArchiveOutputStream` | `createArchiveOutputStream(String archiverName, OutputStream out)` Create an archive output stream from an archiver name and an input stream.
    `String` | `getEntryEncoding()` Returns the encoding to use for arj, zip, dump, cpio and tar files, or null for the default.
    `void` | `setEntryEncoding(String entryEncoding)` Sets the encoding to use for arj, zip, dump, cpio and tar files.

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

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

- - ### Field Detail

    - #### AR

          public static final String AR

      Constant used to identify the AR archive format.
      Since:
        1.1
      See Also:
        Constant Field Values

    - #### ARJ

          public static final String ARJ

      Constant used to identify the ARJ archive format.
      Since:
        1.6
      See Also:
        Constant Field Values

    - #### CPIO

          public static final String CPIO

      Constant used to identify the CPIO archive format.
      Since:
        1.1
      See Also:
        Constant Field Values

    - #### DUMP

          public static final String DUMP

      Constant used to identify the Unix DUMP archive format.
      Since:
        1.3
      See Also:
        Constant Field Values

    - #### JAR

          public static final String JAR

      Constant used to identify the JAR archive format.
      Since:
        1.1
      See Also:
        Constant Field Values

    - #### TAR

          public static final String TAR

      Constant used to identify the TAR archive format.
      Since:
        1.1
      See Also:
        Constant Field Values

    - #### ZIP

          public static final String ZIP

      Constant used to identify the ZIP archive format.
      Since:
        1.1
      See Also:
        Constant Field Values

    - #### SEVEN_Z

          public static final String SEVEN_Z

      Constant used to identify the 7z archive format.
      Since:
        1.8
      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### ArchiveStreamFactory

          public ArchiveStreamFactory()

  - ### Method Detail

    - #### getEntryEncoding

          public String getEntryEncoding()

      Returns the encoding to use for arj, zip, dump, cpio and tar files, or null for the default.
      Returns:
        entry encoding, or null
      Since:
        1.5

    - #### setEntryEncoding

          public void setEntryEncoding(String entryEncoding)

      Sets the encoding to use for arj, zip, dump, cpio and tar files. Use null for the default.
      Parameters:
        `entryEncoding` - the entry encoding, null uses the default.
      Since:
        1.5

    - #### createArchiveInputStream

          public ArchiveInputStream createArchiveInputStream(String archiverName,
                                                    InputStream in)
                                                      throws ArchiveException

      Create an archive input stream from an archiver name and an input stream.
      Parameters:
        `archiverName` - the archive name, i.e. "ar", "arj", "zip", "tar", "jar", "dump" or "cpio"
        `in` - the input stream
      Returns:
        the archive input stream
      Throws:
        `ArchiveException` - if the archiver name is not known
        `StreamingNotSupportedException` - if the format cannot be read from a stream
        `IllegalArgumentException` - if the archiver name or stream is null

    - #### createArchiveOutputStream

          public ArchiveOutputStream createArchiveOutputStream(String archiverName,
                                                      OutputStream out)
                                                        throws ArchiveException

      Create an archive output stream from an archiver name and an input stream.
      Parameters:
        `archiverName` - the archive name, i.e. "ar", "zip", "tar", "jar" or "cpio"
        `out` - the output stream
      Returns:
        the archive output stream
      Throws:
        `ArchiveException` - if the archiver name is not known
        `StreamingNotSupportedException` - if the format cannot be written to a stream
        `IllegalArgumentException` - if the archiver name or stream is null

    - #### createArchiveInputStream

          public ArchiveInputStream createArchiveInputStream(InputStream in)
                                                      throws ArchiveException

      Create an archive input stream from an input stream, autodetecting the archive type from the first few bytes of the stream. The InputStream must support marks, like BufferedInputStream.
      Parameters:
        `in` - the input stream
      Returns:
        the archive input stream
      Throws:
        `ArchiveException` - if the archiver name is not known
        `StreamingNotSupportedException` - if the format cannot be read from a stream
        `IllegalArgumentException` - if the stream is null or does not support mark

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