Class HeaderReader


  • public class HeaderReader
    extends java.lang.Object
    Helper class to read header information for the zip file
    • Field Detail

      • rawIO

        private final RawIO rawIO
      • intBuff

        private final byte[] intBuff
    • Constructor Detail

      • HeaderReader

        public HeaderReader()
    • Method Detail

      • readAllHeaders

        public ZipModel readAllHeaders​(java.io.RandomAccessFile zip4jRaf,
                                       Zip4jConfig zip4jConfig)
                                throws java.io.IOException
        Throws:
        java.io.IOException
      • readEndOfCentralDirectoryRecord

        private EndOfCentralDirectoryRecord readEndOfCentralDirectoryRecord​(java.io.RandomAccessFile zip4jRaf,
                                                                            RawIO rawIO,
                                                                            Zip4jConfig zip4jConfig)
                                                                     throws java.io.IOException
        Throws:
        java.io.IOException
      • readCentralDirectory

        private CentralDirectory readCentralDirectory​(java.io.RandomAccessFile zip4jRaf,
                                                      RawIO rawIO,
                                                      java.nio.charset.Charset charset)
                                               throws java.io.IOException
        Throws:
        java.io.IOException
      • readExtraDataRecords

        private void readExtraDataRecords​(java.io.RandomAccessFile zip4jRaf,
                                          FileHeader fileHeader)
                                   throws java.io.IOException
        Throws:
        java.io.IOException
      • readExtraDataRecords

        private void readExtraDataRecords​(java.io.InputStream inputStream,
                                          LocalFileHeader localFileHeader)
                                   throws java.io.IOException
        Throws:
        java.io.IOException
      • readExtraDataRecords

        private java.util.List<ExtraDataRecord> readExtraDataRecords​(java.io.RandomAccessFile zip4jRaf,
                                                                     int extraFieldLength)
                                                              throws java.io.IOException
        Throws:
        java.io.IOException
      • readExtraDataRecords

        private java.util.List<ExtraDataRecord> readExtraDataRecords​(java.io.InputStream inputStream,
                                                                     int extraFieldLength)
                                                              throws java.io.IOException
        Throws:
        java.io.IOException
      • parseExtraDataRecords

        private java.util.List<ExtraDataRecord> parseExtraDataRecords​(byte[] extraFieldBuf,
                                                                      int extraFieldLength)
      • readZip64EndOfCentralDirectoryLocator

        private Zip64EndOfCentralDirectoryLocator readZip64EndOfCentralDirectoryLocator​(java.io.RandomAccessFile zip4jRaf,
                                                                                        RawIO rawIO,
                                                                                        long offsetEndOfCentralDirectoryRecord)
                                                                                 throws java.io.IOException
        Throws:
        java.io.IOException
      • readZip64EndCentralDirRec

        private Zip64EndOfCentralDirectoryRecord readZip64EndCentralDirRec​(java.io.RandomAccessFile zip4jRaf,
                                                                           RawIO rawIO)
                                                                    throws java.io.IOException
        Throws:
        java.io.IOException
      • readZip64ExtendedInfo

        private void readZip64ExtendedInfo​(FileHeader fileHeader,
                                           RawIO rawIO)
      • readZip64ExtendedInfo

        private Zip64ExtendedInfo readZip64ExtendedInfo​(java.util.List<ExtraDataRecord> extraDataRecords,
                                                        RawIO rawIO,
                                                        long uncompressedSize,
                                                        long compressedSize,
                                                        long offsetLocalHeader,
                                                        int diskNumberStart)
      • setFilePointerToReadZip64EndCentralDirLoc

        private void setFilePointerToReadZip64EndCentralDirLoc​(java.io.RandomAccessFile zip4jRaf,
                                                               long offsetEndOfCentralDirectoryRecord)
                                                        throws java.io.IOException
        Throws:
        java.io.IOException
      • readLocalFileHeader

        public LocalFileHeader readLocalFileHeader​(java.io.InputStream inputStream,
                                                   java.nio.charset.Charset charset)
                                            throws java.io.IOException
        Throws:
        java.io.IOException
      • readDataDescriptor

        public DataDescriptor readDataDescriptor​(java.io.InputStream inputStream,
                                                 boolean isZip64Format)
                                          throws java.io.IOException
        Throws:
        java.io.IOException
      • getNumberOfEntriesInCentralDirectory

        private long getNumberOfEntriesInCentralDirectory​(ZipModel zipModel)
      • locateOffsetOfEndOfCentralDirectory

        private long locateOffsetOfEndOfCentralDirectory​(java.io.RandomAccessFile randomAccessFile)
                                                  throws java.io.IOException
        Throws:
        java.io.IOException
      • locateOffsetOfEndOfCentralDirectoryByReverseSeek

        private long locateOffsetOfEndOfCentralDirectoryByReverseSeek​(java.io.RandomAccessFile randomAccessFile)
                                                               throws java.io.IOException
        Throws:
        java.io.IOException
      • seekInCurrentPart

        private void seekInCurrentPart​(java.io.RandomAccessFile randomAccessFile,
                                       long pos)
                                throws java.io.IOException
        Throws:
        java.io.IOException
      • readZipComment

        private java.lang.String readZipComment​(java.io.RandomAccessFile raf,
                                                int commentLength,
                                                java.nio.charset.Charset charset)
      • isDirectory

        public boolean isDirectory​(byte[] externalFileAttributes,
                                   java.lang.String fileName)