System.IO.Compression.ZipArchive.WriteFile C# (CSharp) Method

WriteFile() private method

private WriteFile ( ) : void
return void
        private void WriteFile()
        {
            //if we are in create mode, we always set readEntries to true in Init
            //if we are in update mode, we call EnsureCentralDirectoryRead, which sets readEntries to true
            Debug.Assert(_readEntries);

            if (_mode == ZipArchiveMode.Update)
            {
                List<ZipArchiveEntry> markedForDelete = new List<ZipArchiveEntry>();
                foreach (ZipArchiveEntry entry in _entries)
                {
                    if (!entry.LoadLocalHeaderExtraFieldAndCompressedBytesIfNeeded())
                        markedForDelete.Add(entry);
                }
                foreach (ZipArchiveEntry entry in markedForDelete)
                    entry.Delete();

                _archiveStream.Seek(0, SeekOrigin.Begin);
                _archiveStream.SetLength(0);
            }

            foreach (ZipArchiveEntry entry in _entries)
            {
                entry.WriteAndFinishLocalEntry();
            }

            long startOfCentralDirectory = _archiveStream.Position;

            foreach (ZipArchiveEntry entry in _entries)
            {
                entry.WriteCentralDirectoryFileHeader();
            }

            long sizeOfCentralDirectory = _archiveStream.Position - startOfCentralDirectory;

            WriteArchiveEpilogue(startOfCentralDirectory, sizeOfCentralDirectory);
        }