System.IO.Compression.Zip64EndOfCentralDirectoryRecord.WriteBlock C# (CSharp) Method

WriteBlock() public static method

public static WriteBlock ( Stream stream, long numberOfEntries, long startOfCentralDirectory, long sizeOfCentralDirectory ) : void
stream Stream
numberOfEntries long
startOfCentralDirectory long
sizeOfCentralDirectory long
return void
        public static void WriteBlock(Stream stream, long numberOfEntries, long startOfCentralDirectory, long sizeOfCentralDirectory)
        {
            BinaryWriter writer = new BinaryWriter(stream);

            //write Zip 64 EOCD record
            writer.Write(SignatureConstant);
            writer.Write(NormalSize);
            writer.Write((ushort)ZipVersionNeededValues.Zip64);   //version needed is 45 for zip 64 support
            writer.Write((ushort)ZipVersionNeededValues.Zip64);   //version made by: high byte is 0 for MS DOS, low byte is version needed
            writer.Write((uint)0);    //number of this disk is 0
            writer.Write((uint)0);    //number of disk with start of central directory is 0
            writer.Write(numberOfEntries); //number of entries on this disk
            writer.Write(numberOfEntries); //number of entries total
            writer.Write(sizeOfCentralDirectory);
            writer.Write(startOfCentralDirectory);
        }
    }

Usage Example

Esempio n. 1
0
        //writes eocd, and if needed, zip 64 eocd, zip64 eocd locator
        //should only throw an exception in extremely exceptional cases because it is called from dispose
        private void WriteArchiveEpilogue(long startOfCentralDirectory, long sizeOfCentralDirectory)
        {
            //determine if we need Zip 64
            bool needZip64 = false;

            if (startOfCentralDirectory >= uint.MaxValue ||
                sizeOfCentralDirectory >= uint.MaxValue ||
                _entries.Count >= ZipHelper.Mask16Bit
#if DEBUG_FORCE_ZIP64
                || _forceZip64
#endif
                )
            {
                needZip64 = true;
            }

            //if we need zip 64, write zip 64 eocd and locator
            if (needZip64)
            {
                long zip64EOCDRecordStart = _archiveStream.Position;

                Zip64EndOfCentralDirectoryRecord.WriteBlock(_archiveStream, _entries.Count, startOfCentralDirectory, sizeOfCentralDirectory);
                Zip64EndOfCentralDirectoryLocator.WriteBlock(_archiveStream, zip64EOCDRecordStart);
            }

            //write normal eocd
            ZipEndOfCentralDirectoryBlock.WriteBlock(_archiveStream, _entries.Count, startOfCentralDirectory, sizeOfCentralDirectory, _archiveComment);
        }
All Usage Examples Of System.IO.Compression.Zip64EndOfCentralDirectoryRecord::WriteBlock
Zip64EndOfCentralDirectoryRecord