Jo Shields a575963da9 Imported Upstream version 3.6.0
Former-commit-id: da6be194a6b1221998fc28233f2503bd61dd9d14
2014-08-13 10:39:27 +01:00

76 lines
1.5 KiB
C#
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// ZipArchive.cs created with MonoDevelop
// User: alan at 16:31 20/10/2008
//
// To change standard headers go to Edit->Preferences->Coding->Standard Headers
//
using System;
using System.IO;
using System.IO.Packaging;
namespace zipsharp
{
class ZipArchive : IDisposable
{
internal bool FileActive { get; set; }
internal ZipHandle Handle { get; private set; }
ZipStream Stream { get; set; }
public ZipArchive (string filename, Append append)
: this (File.Open (filename, FileMode.OpenOrCreate), append)
{
}
public ZipArchive (Stream stream, Append append)
: this (stream, append, false)
{
}
public ZipArchive (Stream stream, Append append, bool ownsStream)
{
Stream = new ZipStream (stream, ownsStream);
Handle = NativeZip.OpenArchive (Stream.IOFunctions, append);
}
static int ConvertCompression (System.IO.Packaging.CompressionOption option)
{
switch (option)
{
case CompressionOption.SuperFast:
return 2;
case CompressionOption.Fast:
return 4;
case CompressionOption.Normal:
return 6;
case CompressionOption.Maximum:
return 9;
default:
return 0;
}
}
public Stream GetStream (string filename, System.IO.Packaging.CompressionOption option)
{
if (FileActive)
throw new InvalidOperationException ("A file is already open");
NativeZip.OpenFile (Handle, filename, ConvertCompression (option));
return new ZipWriteStream (this);
}
public void Dispose ()
{
NativeZip.CloseArchive (Handle);
Stream.Close ();
}
}
}