49 lines
923 B
C#
49 lines
923 B
C#
![]() |
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(Stream s, int compressionlevel)
|
|||
|
{
|
|||
|
level = compressionlevel;
|
|||
|
z = new ZipOutputStream(s)
|
|||
|
{
|
|||
|
IsStreamOwner = false,
|
|||
|
UseZip64 = UseZip64.Off
|
|||
|
};
|
|||
|
z.SetLevel(level);
|
|||
|
}
|
|||
|
|
|||
|
public void WriteItem(string name, Action<Stream> 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;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|