using System; using System.Collections.Generic; using System.Linq; using System.Text; using ICSharpCode.SharpZipLib.Zip; using System.IO; namespace BizHawk.Client.Common { public class SharpZipWriter : IZipWriter { private ZipOutputStream z; private int level; public SharpZipWriter(string path, int compressionlevel) { level = compressionlevel; z = new ZipOutputStream(new FileStream(path, FileMode.Create, FileAccess.Write)) { IsStreamOwner = true, UseZip64 = UseZip64.Off }; z.SetLevel(level); } public void WriteItem(string name, Action callback) { var e = new ZipEntry(name); if (level == 0) e.CompressionMethod = CompressionMethod.Stored; else e.CompressionMethod = CompressionMethod.Deflated; z.PutNextEntry(e); callback(z); z.CloseEntry(); } public void Dispose() { if (z != null) { z.Dispose(); z = null; } } } }