System.IO.Compression.ZipArchiveEntry.WriteDataDescriptor C# (CSharp) Méthode

WriteDataDescriptor() private méthode

private WriteDataDescriptor ( ) : void
Résultat void
        private void WriteDataDescriptor()
        {
            // data descriptor can be 32-bit or 64-bit sizes. 32-bit is more compatible, so use that if possible
            // signature is optional but recommended by the spec

            BinaryWriter writer = new BinaryWriter(_archive.ArchiveStream);

            writer.Write(ZipLocalFileHeader.DataDescriptorSignature);
            writer.Write(_crc32);
            if (SizesTooLarge())
            {
                writer.Write(_compressedSize);
                writer.Write(_uncompressedSize);
            }
            else
            {
                writer.Write((uint)_compressedSize);
                writer.Write((uint)_uncompressedSize);
            }
        }

Usage Example

Exemple #1
0
            protected override void Dispose(bool disposing)
            {
                if (disposing && !_isDisposed)
                {
                    _crcSizeStream.Dispose(); // now we have size/crc info

                    if (!_everWritten)
                    {
                        // write local header, no data, so we use stored
                        _entry.WriteLocalFileHeader(isEmptyFile: true);
                    }
                    else
                    {
                        // go back and finish writing
                        if (_entry._archive.ArchiveStream.CanSeek)
                        {
                            // finish writing local header if we have seek capabilities

                            _entry.WriteCrcAndSizesInLocalHeader(_usedZip64inLH);
                        }
                        else
                        {
                            // write out data descriptor if we don't have seek capabilities
                            _entry.WriteDataDescriptor();
                        }
                    }
                    _canWrite   = false;
                    _isDisposed = true;
                }

                base.Dispose(disposing);
            }