ICSharpCode.SharpZipLib.Zip.ZipFile.AddEntry C# (CSharp) Метод

AddEntry() приватный Метод

private AddEntry ( ZipFile workFile, ZipUpdate update ) : void
workFile ZipFile
update ZipUpdate
Результат void
        private void AddEntry(ZipFile workFile, ZipUpdate update) {
            Stream source=null;

            if (update.Entry.IsFile) {
                source=update.GetSource();

                if (source==null) {
                    source=updateDataSource_.GetSource(update.Entry, update.Filename);
                }
            }

            if (source!=null) {
                using (source) {
                    long sourceStreamLength=source.Length;
                    if (update.OutEntry.Size<0) {
                        update.OutEntry.Size=sourceStreamLength;
                    } else {
                        // Check for errant entries.
                        if (update.OutEntry.Size!=sourceStreamLength) {
                            throw new ZipException("Entry size/stream size mismatch");
                        }
                    }

                    workFile.WriteLocalEntryHeader(update);

                    long dataStart=workFile.baseStream_.Position;

                    using (Stream output=workFile.GetOutputStream(update.OutEntry)) {
                        CopyBytes(update, output, source, sourceStreamLength, true);
                    }

                    long dataEnd=workFile.baseStream_.Position;
                    update.OutEntry.CompressedSize=dataEnd-dataStart;

                    if ((update.OutEntry.Flags&(int)GeneralBitFlags.Descriptor)==(int)GeneralBitFlags.Descriptor) {
                        var helper=new ZipHelperStream(workFile.baseStream_);
                        helper.WriteDataDescriptor(update.OutEntry);
                    }
                }
            } else {
                workFile.WriteLocalEntryHeader(update);
                update.OutEntry.CompressedSize=0;
            }
        }