Beispiel #1
0
        internal static ZipIOZip64EndOfCentralDirectoryBlock CreateNew(ZipIOBlockManager blockManager)
        {
            ZipIOZip64EndOfCentralDirectoryBlock block = new ZipIOZip64EndOfCentralDirectoryBlock(blockManager);

            block._size      = 0; // brand new created records are optional by definition untill UpdateReferences is called, so size must be 0
            block._offset    = 0;
            block._dirtyFlag = false;

            // initialize fields with ythe data from the EOCD
            block.InitializeFromEndOfCentralDirectory(blockManager.EndOfCentralDirectoryBlock);

            return(block);
        }
Beispiel #2
0
        internal static ZipIOZip64EndOfCentralDirectoryBlock SeekableLoad(ZipIOBlockManager blockManager)
        {
            ZipIOZip64EndOfCentralDirectoryLocatorBlock zip64endOfCentralDirectoryLocator =
                blockManager.Zip64EndOfCentralDirectoryLocatorBlock;

            long zip64EndOfCentralDirectoryOffset =
                zip64endOfCentralDirectoryLocator.OffsetOfZip64EndOfCentralDirectoryRecord;

            ZipIOZip64EndOfCentralDirectoryBlock block = new ZipIOZip64EndOfCentralDirectoryBlock(blockManager);

            blockManager.Stream.Seek(zip64EndOfCentralDirectoryOffset, SeekOrigin.Begin);

            block.ParseRecord(blockManager.BinaryReader, zip64EndOfCentralDirectoryOffset);

            return(block);
        }
Beispiel #3
0
        //------------------------------------------------------
        //
        //  Internal Methods
        //
        //------------------------------------------------------
        internal static ZipIOCentralDirectoryBlock SeekableLoad(ZipIOBlockManager blockManager)
        {
            // get proper values from  zip 64 records request will be redirected to the
            // regular EOCD if ZIP 64 record wasn't originated from the parsing

            ZipIOZip64EndOfCentralDirectoryBlock zip64EOCD = blockManager.Zip64EndOfCentralDirectoryBlock;

            blockManager.Stream.Seek(zip64EOCD.OffsetOfStartOfCentralDirectory, SeekOrigin.Begin);

            ZipIOCentralDirectoryBlock block = new ZipIOCentralDirectoryBlock(blockManager);

            block.ParseRecord(blockManager.BinaryReader,
                              zip64EOCD.OffsetOfStartOfCentralDirectory,
                              zip64EOCD.TotalNumberOfEntriesInTheCentralDirectory,
                              zip64EOCD.SizeOfCentralDirectory);

            return(block);
        }
        internal static ZipIOZip64EndOfCentralDirectoryBlock CreateNew(ZipIOBlockManager blockManager) 
        {
            ZipIOZip64EndOfCentralDirectoryBlock block = new ZipIOZip64EndOfCentralDirectoryBlock(blockManager); 
 
            block._size = 0; // brand new created records are optional by definition untill UpdateReferences is called, so size must be 0
            block._offset = 0; 
            block._dirtyFlag = false;

            // initialize fields with ythe data from the EOCD
            block.InitializeFromEndOfCentralDirectory(blockManager.EndOfCentralDirectoryBlock); 

            return block; 
        } 
        internal static ZipIOZip64EndOfCentralDirectoryBlock SeekableLoad (ZipIOBlockManager blockManager)
        { 
            ZipIOZip64EndOfCentralDirectoryLocatorBlock zip64endOfCentralDirectoryLocator = 
                                                blockManager.Zip64EndOfCentralDirectoryLocatorBlock;
 
            long zip64EndOfCentralDirectoryOffset =
                                                zip64endOfCentralDirectoryLocator.OffsetOfZip64EndOfCentralDirectoryRecord;

            ZipIOZip64EndOfCentralDirectoryBlock block = new ZipIOZip64EndOfCentralDirectoryBlock(blockManager); 

            blockManager.Stream.Seek(zip64EndOfCentralDirectoryOffset, SeekOrigin.Begin); 
 
            block.ParseRecord(blockManager.BinaryReader, zip64EndOfCentralDirectoryOffset);
 
            return block;
        }