Class ArjArchiveInputStream

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable

    public class ArjArchiveInputStream
    extends ArchiveInputStream
    Implements the "arj" archive format as an InputStream.

    Reference 1
    Reference 2

    Since:
    1.6
    • Field Detail

      • in

        private final java.io.DataInputStream in
      • charsetName

        private final java.lang.String charsetName
      • currentInputStream

        private java.io.InputStream currentInputStream
    • Constructor Detail

      • ArjArchiveInputStream

        public ArjArchiveInputStream​(java.io.InputStream inputStream,
                                     java.lang.String charsetName)
                              throws ArchiveException
        Constructs the ArjInputStream, taking ownership of the inputStream that is passed in.
        Parameters:
        inputStream - the underlying stream, whose ownership is taken
        charsetName - the charset used for file names and comments in the archive. May be null to use the platform default.
        Throws:
        ArchiveException - if an exception occurs while reading
      • ArjArchiveInputStream

        public ArjArchiveInputStream​(java.io.InputStream inputStream)
                              throws ArchiveException
        Constructs the ArjInputStream, taking ownership of the inputStream that is passed in, and using the CP437 character encoding.
        Parameters:
        inputStream - the underlying stream, whose ownership is taken
        Throws:
        ArchiveException - if an exception occurs while reading
    • Method Detail

      • close

        public void close()
                   throws java.io.IOException
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Overrides:
        close in class java.io.InputStream
        Throws:
        java.io.IOException
      • read8

        private int read8​(java.io.DataInputStream dataIn)
                   throws java.io.IOException
        Throws:
        java.io.IOException
      • read16

        private int read16​(java.io.DataInputStream dataIn)
                    throws java.io.IOException
        Throws:
        java.io.IOException
      • read32

        private int read32​(java.io.DataInputStream dataIn)
                    throws java.io.IOException
        Throws:
        java.io.IOException
      • readString

        private java.lang.String readString​(java.io.DataInputStream dataIn)
                                     throws java.io.IOException
        Throws:
        java.io.IOException
      • readFully

        private void readFully​(java.io.DataInputStream dataIn,
                               byte[] b)
                        throws java.io.IOException
        Throws:
        java.io.IOException
      • readHeader

        private byte[] readHeader()
                           throws java.io.IOException
        Throws:
        java.io.IOException
      • readMainHeader

        private MainHeader readMainHeader()
                                   throws java.io.IOException
        Throws:
        java.io.IOException
      • readLocalFileHeader

        private LocalFileHeader readLocalFileHeader()
                                             throws java.io.IOException
        Throws:
        java.io.IOException
      • readExtraData

        private void readExtraData​(int firstHeaderSize,
                                   java.io.DataInputStream firstHeader,
                                   LocalFileHeader localFileHeader)
                            throws java.io.IOException
        Throws:
        java.io.IOException
      • matches

        public static boolean matches​(byte[] signature,
                                      int length)
        Checks if the signature matches what is expected for an arj file.
        Parameters:
        signature - the bytes to check
        length - the number of bytes to check
        Returns:
        true, if this stream is an arj archive stream, false otherwise
      • getArchiveName

        public java.lang.String getArchiveName()
        Gets the archive's recorded name.
        Returns:
        the archive's name
      • getArchiveComment

        public java.lang.String getArchiveComment()
        Gets the archive's comment.
        Returns:
        the archive's comment
      • getNextEntry

        public ArjArchiveEntry getNextEntry()
                                     throws java.io.IOException
        Description copied from class: ArchiveInputStream
        Returns the next Archive Entry in this Stream.
        Specified by:
        getNextEntry in class ArchiveInputStream
        Returns:
        the next entry, or null if there are no more entries
        Throws:
        java.io.IOException - if the next entry could not be read
      • canReadEntryData

        public boolean canReadEntryData​(ArchiveEntry ae)
        Description copied from class: ArchiveInputStream
        Whether this stream is able to read the given entry.

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

        Overrides:
        canReadEntryData in class ArchiveInputStream
        Parameters:
        ae - the entry to test
        Returns:
        This implementation always returns true.
      • read

        public int read​(byte[] b,
                        int off,
                        int len)
                 throws java.io.IOException
        Overrides:
        read in class java.io.InputStream
        Throws:
        java.io.IOException