public void AddFile(ZipStorer.CompressionMethod compressionMethod, string sourceFile, string fileNameInZip, string fileEntryComment) { if (this.access == FileAccess.Read) { throw new InvalidOperationException("Writing is not allowed"); } using (FileStream fileStream = new FileStream(sourceFile, FileMode.Open, FileAccess.Read)) { this.AddStream(compressionMethod, fileStream, fileNameInZip, File.GetLastWriteTime(sourceFile), fileEntryComment); } }
public void AddStream(ZipStorer.CompressionMethod compressionMethod, Stream sourceStream, string fileNameInZip, DateTime modificationTimeStamp, string fileEntryComment) { if (this.access == FileAccess.Read) { throw new InvalidOperationException("Writing is not allowed"); } ZipStorer.ZipFileEntry item = default(ZipStorer.ZipFileEntry); item.Method = compressionMethod; item.EncodeUTF8 = this.EncodeUtf8; item.FilenameInZip = ZipStorer.NormalizeFileName(fileNameInZip); item.Comment = ((fileEntryComment == null) ? string.Empty : fileEntryComment); item.Crc32 = 0u; item.HeaderOffset = (uint)this.zipFileStream.Position; item.ModifyTime = modificationTimeStamp; this.WriteLocalHeader(ref item); item.FileOffset = (uint)this.zipFileStream.Position; this.Store(ref item, sourceStream); sourceStream.Close(); this.UpdateCrcAndSizes(ref item); this.files.Add(item); }