Class ArArchiveOutputStream

java.lang.Object
java.io.OutputStream
org.apache.commons.compress.archivers.ArchiveOutputStream
org.apache.commons.compress.archivers.ar.ArArchiveOutputStream
All Implemented Interfaces:
Closeable, Flushable, AutoCloseable

public class ArArchiveOutputStream extends ArchiveOutputStream
Implements the "ar" archive format as an output stream.
  • Field Details

    • LONGFILE_ERROR

      public static final int LONGFILE_ERROR
      Fail if a long file name is required in the archive.
      See Also:
    • LONGFILE_BSD

      public static final int LONGFILE_BSD
      BSD ar extensions are used to store long file names in the archive.
      See Also:
    • out

      private final OutputStream out
    • entryOffset

      private long entryOffset
    • prevEntry

      private ArArchiveEntry prevEntry
    • haveUnclosedEntry

      private boolean haveUnclosedEntry
    • longFileMode

      private int longFileMode
    • finished

      private boolean finished
      indicates if this archive is finished
  • Constructor Details

    • ArArchiveOutputStream

      public ArArchiveOutputStream(OutputStream pOut)
  • Method Details

    • setLongFileMode

      public void setLongFileMode(int longFileMode)
      Set the long file mode. This can be LONGFILE_ERROR(0) or LONGFILE_BSD(1). This specifies the treatment of long file names (names >= 16). Default is LONGFILE_ERROR.
      Parameters:
      longFileMode - the mode to use
      Since:
      1.3
    • writeArchiveHeader

      private void writeArchiveHeader() throws IOException
      Throws:
      IOException
    • closeArchiveEntry

      public void closeArchiveEntry() throws IOException
      Description copied from class: ArchiveOutputStream
      Closes the archive entry, writing any trailer information that may be required.
      Specified by:
      closeArchiveEntry in class ArchiveOutputStream
      Throws:
      IOException - if an I/O error occurs
    • putArchiveEntry

      public void putArchiveEntry(ArchiveEntry pEntry) throws IOException
      Description copied from class: ArchiveOutputStream
      Writes the headers for an archive entry to the output stream. The caller must then write the content to the stream and call ArchiveOutputStream.closeArchiveEntry() to complete the process.
      Specified by:
      putArchiveEntry in class ArchiveOutputStream
      Parameters:
      pEntry - describes the entry
      Throws:
      IOException - if an I/O error occurs
    • fill

      private long fill(long pOffset, long pNewOffset, char pFill) throws IOException
      Throws:
      IOException
    • write

      private long write(String data) throws IOException
      Throws:
      IOException
    • writeEntryHeader

      private void writeEntryHeader(ArArchiveEntry pEntry) throws IOException
      Throws:
      IOException
    • write

      public void write(byte[] b, int off, int len) throws IOException
      Overrides:
      write in class OutputStream
      Throws:
      IOException
    • close

      public void close() throws IOException
      Calls finish if necessary, and then closes the OutputStream
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
      Overrides:
      close in class OutputStream
      Throws:
      IOException
    • createArchiveEntry

      public ArchiveEntry createArchiveEntry(File inputFile, String entryName) throws IOException
      Description copied from class: ArchiveOutputStream
      Create an archive entry using the inputFile and entryName provided.
      Specified by:
      createArchiveEntry in class ArchiveOutputStream
      Parameters:
      inputFile - the file to create the entry from
      entryName - name to use for the entry
      Returns:
      the ArchiveEntry set up with details from the file
      Throws:
      IOException - if an I/O error occurs
    • createArchiveEntry

      public ArchiveEntry createArchiveEntry(Path inputPath, String entryName, LinkOption... options) throws IOException
      Create an archive entry using the inputPath and entryName provided. The default implementation calls simply delegates as:
      return createArchiveEntry(inputFile.toFile(), entryName);
      Subclasses should override this method.
      Overrides:
      createArchiveEntry in class ArchiveOutputStream
      Parameters:
      inputPath - the file to create the entry from
      entryName - name to use for the entry
      options - options indicating how symbolic links are handled.
      Returns:
      the ArchiveEntry set up with details from the file
      Throws:
      IOException - if an I/O error occurs
      Since:
      1.21
    • finish

      public void finish() throws IOException
      Description copied from class: ArchiveOutputStream
      Finishes the addition of entries to this stream, without closing it. Additional data can be written, if the format supports it.
      Specified by:
      finish in class ArchiveOutputStream
      Throws:
      IOException - if the user forgets to close the entry.