Files
sharpcompress/SharpCompress/Writer/GZip/GZipWriter.cs
2013-04-28 12:32:55 +01:00

43 lines
1.3 KiB
C#

using System;
using System.IO;
using SharpCompress.Common;
using SharpCompress.Common.Tar.Headers;
using SharpCompress.Compressor;
using SharpCompress.Compressor.Deflate;
namespace SharpCompress.Writer.GZip
{
public class GZipWriter : AbstractWriter
{
private bool wroteToStream;
public GZipWriter(Stream destination)
: base(ArchiveType.GZip)
{
InitalizeStream(new GZipStream(destination, CompressionMode.Compress, true), true);
}
protected override void Dispose(bool isDisposing)
{
if (isDisposing)
{
//dispose here to finish the GZip, GZip won't close the underlying stream
OutputStream.Dispose();
}
base.Dispose(isDisposing);
}
public override void Write(string filename, Stream source, DateTime? modificationTime)
{
if (wroteToStream)
{
throw new ArgumentException("Can only write a single stream to a GZip file.");
}
GZipStream stream = OutputStream as GZipStream;
stream.FileName = filename;
stream.LastModified = modificationTime;
source.TransferTo(stream);
wroteToStream = true;
}
}
}