using SharpCompress.Archives; using SharpCompress.Common; using SharpCompress.Compressors.Deflate; namespace SharpCompress.Writers.Zip { public class ZipWriterOptions : WriterOptions { public ZipWriterOptions(CompressionType compressionType) : base(compressionType) { } internal ZipWriterOptions(WriterOptions options) : base(options.CompressionType) { LeaveStreamOpen = options.LeaveStreamOpen; ArchiveEncoding = options.ArchiveEncoding; var writerOptions = options as ZipWriterOptions; if (writerOptions != null) { UseZip64 = writerOptions.UseZip64; DeflateCompressionLevel = writerOptions.DeflateCompressionLevel; ArchiveComment = writerOptions.ArchiveComment; } } /// /// When CompressionType.Deflate is used, this property is referenced. Defaults to CompressionLevel.Default. /// public CompressionLevel DeflateCompressionLevel { get; set; } = CompressionLevel.Default; public string ArchiveComment { get; set; } /// /// Sets a value indicating if zip64 support is enabled. /// If this is not set, individual stream lengths cannot exceed 4 GiB. /// This option is not supported for non-seekable streams. /// Archives larger than 4GiB are supported as long as all streams /// are less than 4GiB in length. /// public bool UseZip64 { get; set; } } }