Show / Hide Table of Contents

Class ZipFile

This class represents a Zip archive. You can ask for the contained entries, or get an input stream for a file entry. The entry is automatically decompressed.

You can also update the archive adding or deleting entries.

This class is thread safe for input: You can open input streams for arbitrary entries in different threads.

Author of the original java version : Jochen Hoenicke

Inheritance
System.Object
ZipFile
Implements
System.Collections.IEnumerable
System.IDisposable
Inherited Members
System.Object.Equals(System.Object)
System.Object.Equals(System.Object, System.Object)
System.Object.GetHashCode()
System.Object.GetType()
System.Object.MemberwiseClone()
System.Object.ReferenceEquals(System.Object, System.Object)
System.Object.ToString()
Namespace: ICSharpCode.SharpZipLib.Zip
Assembly: ICSharpCode.SharpZipLib.dll
Syntax
public class ZipFile : IEnumerable, IDisposable
Examples
using System;
using System.Text;
using System.Collections;
using System.IO;

using ICSharpCode.SharpZipLib.Zip;

class MainClass
{
    static public void Main(string[] args)
    {
        using (ZipFile zFile = new ZipFile(args[0])) {
            Console.WriteLine("Listing of : " + zFile.Name);
            Console.WriteLine("");
            Console.WriteLine("Raw Size    Size      Date     Time     Name");
            Console.WriteLine("--------  --------  --------  ------  ---------");
            foreach (ZipEntry e in zFile) {
                if ( e.IsFile ) {
                    DateTime d = e.DateTime;
                    Console.WriteLine("{0, -10}{1, -10}{2}  {3}   {4}", e.Size, e.CompressedSize,
                        d.ToString("dd-MM-yy"), d.ToString("HH:mm"),
                        e.Name);
                }
            }
        }
    }
}

Constructors

| Improve this Doc View Source

ZipFile(FileStream)

Opens a Zip file reading the given System.IO.FileStream.

Declaration
public ZipFile(FileStream file)
Parameters
Type Name Description
System.IO.FileStream file

The System.IO.FileStream to read archive data from.

Exceptions
Type Condition
System.ArgumentNullException

The supplied argument is null.

System.IO.IOException

An i/o error occurs.

ZipException

The file doesn't contain a valid zip archive.

| Improve this Doc View Source

ZipFile(FileStream, Boolean)

Opens a Zip file reading the given System.IO.FileStream.

Declaration
public ZipFile(FileStream file, bool leaveOpen)
Parameters
Type Name Description
System.IO.FileStream file

The System.IO.FileStream to read archive data from.

System.Boolean leaveOpen

true to leave the System.IO.FileStream open when the ZipFile is disposed, false to dispose of it

Exceptions
Type Condition
System.ArgumentNullException

The supplied argument is null.

System.IO.IOException

An i/o error occurs.

ZipException

The file doesn't contain a valid zip archive.

| Improve this Doc View Source

ZipFile(Stream)

Opens a Zip file reading the given System.IO.Stream.

Declaration
public ZipFile(Stream stream)
Parameters
Type Name Description
System.IO.Stream stream

The System.IO.Stream to read archive data from.

Exceptions
Type Condition
System.IO.IOException

An i/o error occurs

ZipException

The stream doesn't contain a valid zip archive.

System.ArgumentException

The System.IO.Stream doesnt support seeking.

System.ArgumentNullException

The System.IO.Stream argument is null.

| Improve this Doc View Source

ZipFile(Stream, Boolean, StringCodec)

Opens a Zip file reading the given System.IO.Stream.

Declaration
public ZipFile(Stream stream, bool leaveOpen, StringCodec stringCodec = null)
Parameters
Type Name Description
System.IO.Stream stream

The System.IO.Stream to read archive data from.

System.Boolean leaveOpen

true to leave the System.IO.Stream open when the ZipFile is disposed, false to dispose of it

StringCodec stringCodec
Exceptions
Type Condition
System.IO.IOException

An i/o error occurs

ZipException

The stream doesn't contain a valid zip archive.

System.ArgumentException

The System.IO.Stream doesnt support seeking.

System.ArgumentNullException

The System.IO.Stream argument is null.

| Improve this Doc View Source

ZipFile(String, StringCodec)

Opens a Zip file with the given name for reading.

Declaration
public ZipFile(string name, StringCodec stringCodec = null)
Parameters
Type Name Description
System.String name

The name of the file to open.

StringCodec stringCodec
Exceptions
Type Condition
System.ArgumentNullException

The argument supplied is null.

System.IO.IOException

An i/o error occurs

ZipException

The file doesn't contain a valid zip archive.

Fields

| Improve this Doc View Source

KeysRequired

Event handler for handling encryption keys.

Declaration
public ZipFile.KeysRequiredEventHandler KeysRequired
Field Value
Type Description
ZipFile.KeysRequiredEventHandler

Properties

| Improve this Doc View Source

BufferSize

Get /set the buffer size to be used when updating this zip file.

Declaration
public int BufferSize { get; set; }
Property Value
Type Description
System.Int32
| Improve this Doc View Source

Count

Get the number of entries contained in this ZipFile.

Declaration
public long Count { get; }
Property Value
Type Description
System.Int64
| Improve this Doc View Source

EntryByIndex[Int32]

Indexer property for ZipEntries

Declaration
public ZipEntry this[int index] { get; }
Parameters
Type Name Description
System.Int32 index
Property Value
Type Description
ZipEntry
| Improve this Doc View Source

EntryFactory

Get/set the IEntryFactory used to generate ZipEntry values during updates.

Declaration
public IEntryFactory EntryFactory { get; set; }
Property Value
Type Description
IEntryFactory
| Improve this Doc View Source

IsEmbeddedArchive

Get a value indicating whether this archive is embedded in another file or not.

Declaration
public bool IsEmbeddedArchive { get; }
Property Value
Type Description
System.Boolean
| Improve this Doc View Source

IsNewArchive

Get a value indicating that this archive is a new one.

Declaration
public bool IsNewArchive { get; }
Property Value
Type Description
System.Boolean
| Improve this Doc View Source

IsStreamOwner

Get/set a flag indicating if the underlying stream is owned by the ZipFile instance. If the flag is true then the stream will be closed when Close is called.

Declaration
public bool IsStreamOwner { get; set; }
Property Value
Type Description
System.Boolean
Remarks

The default value is true in all cases.

| Improve this Doc View Source

IsUpdating

Get a value indicating an update has been started.

Declaration
public bool IsUpdating { get; }
Property Value
Type Description
System.Boolean
| Improve this Doc View Source

Name

Gets the name of this zip file.

Declaration
public string Name { get; }
Property Value
Type Description
System.String
| Improve this Doc View Source

NameTransform

Get / set the INameTransform to apply to names when updating.

Declaration
public INameTransform NameTransform { get; set; }
Property Value
Type Description
INameTransform
| Improve this Doc View Source

Password

Password to be used for encrypting/decrypting files.

Declaration
public string Password { set; }
Property Value
Type Description
System.String
Remarks

Set to null if no password is required.

| Improve this Doc View Source

Size

Gets the number of entries in this zip file.

Declaration
[Obsolete("Use the Count property instead")]
public int Size { get; }
Property Value
Type Description
System.Int32
Exceptions
Type Condition
System.InvalidOperationException

The Zip file has been closed.

| Improve this Doc View Source

SkipLocalEntryTestsOnLocate

Skip the verification of the local header when reading an archive entry. Set this to attempt to read the entries even if the headers should indicate that doing so would fail or produce an unexpected output.

Declaration
public bool SkipLocalEntryTestsOnLocate { get; set; }
Property Value
Type Description
System.Boolean
| Improve this Doc View Source

StringCodec

Utility class for resolving the encoding used for reading and writing strings

Declaration
public StringCodec StringCodec { set; }
Property Value
Type Description
StringCodec
| Improve this Doc View Source

UseZip64

Get / set a value indicating how Zip64 Extension usage is determined when adding entries.

Declaration
public UseZip64 UseZip64 { get; set; }
Property Value
Type Description
UseZip64
| Improve this Doc View Source

ZipCryptoEncoding

The encoding used for the ZipCrypto passwords. Defaults to DefaultZipCryptoEncoding.

Declaration
public Encoding ZipCryptoEncoding { get; set; }
Property Value
Type Description
System.Text.Encoding
| Improve this Doc View Source

ZipFileComment

Gets the comment for the zip file.

Declaration
public string ZipFileComment { get; }
Property Value
Type Description
System.String

Methods

| Improve this Doc View Source

AbortUpdate()

Abort updating leaving the archive unchanged.

Declaration
public void AbortUpdate()
See Also
BeginUpdate()
CommitUpdate()
| Improve this Doc View Source

Add(IStaticDataSource, ZipEntry)

Add a ZipEntry with data.

Declaration
public void Add(IStaticDataSource dataSource, ZipEntry entry)
Parameters
Type Name Description
IStaticDataSource dataSource

The source of the data for this entry.

ZipEntry entry

The entry to add.

Remarks

This can be used to add file entries with a custom data source.

Exceptions
Type Condition
System.NotSupportedException

The encryption method specified in entry is unsupported.

System.NotImplementedException

Compression method is not supported for creating entries.

| Improve this Doc View Source

Add(IStaticDataSource, String)

Add a file entry with data.

Declaration
public void Add(IStaticDataSource dataSource, string entryName)
Parameters
Type Name Description
IStaticDataSource dataSource

The source of the data for this entry.

System.String entryName

The name to give to the entry.

| Improve this Doc View Source

Add(IStaticDataSource, String, CompressionMethod)

Add a file entry with data.

Declaration
public void Add(IStaticDataSource dataSource, string entryName, CompressionMethod compressionMethod)
Parameters
Type Name Description
IStaticDataSource dataSource

The source of the data for this entry.

System.String entryName

The name to give to the entry.

CompressionMethod compressionMethod

The compression method to use.

Exceptions
Type Condition
System.NotImplementedException

Compression method is not supported for creating entries.

| Improve this Doc View Source

Add(IStaticDataSource, String, CompressionMethod, Boolean)

Add a file entry with data.

Declaration
public void Add(IStaticDataSource dataSource, string entryName, CompressionMethod compressionMethod, bool useUnicodeText)
Parameters
Type Name Description
IStaticDataSource dataSource

The source of the data for this entry.

System.String entryName

The name to give to the entry.

CompressionMethod compressionMethod

The compression method to use.

System.Boolean useUnicodeText

Ensure Unicode text is used for name and comments for this entry.

Exceptions
Type Condition
System.NotImplementedException

Compression method is not supported for creating entries.

| Improve this Doc View Source

Add(ZipEntry)

Add a ZipEntry that contains no data.

Declaration
public void Add(ZipEntry entry)
Parameters
Type Name Description
ZipEntry entry

The entry to add.

Remarks

This can be used to add directories, volume labels, or empty file entries.

| Improve this Doc View Source

Add(String)

Add a file to the archive.

Declaration
public void Add(string fileName)
Parameters
Type Name Description
System.String fileName

The name of the file to add.

Exceptions
Type Condition
System.ArgumentNullException

Argument supplied is null.

| Improve this Doc View Source

Add(String, CompressionMethod)

Add a new entry to the archive.

Declaration
public void Add(string fileName, CompressionMethod compressionMethod)
Parameters
Type Name Description
System.String fileName

The name of the file to add.

CompressionMethod compressionMethod

The compression method to use.

Exceptions
Type Condition
System.ArgumentNullException

ZipFile has been closed.

System.NotImplementedException

Compression method is not supported for creating entries.

| Improve this Doc View Source

Add(String, CompressionMethod, Boolean)

Add a new entry to the archive.

Declaration
public void Add(string fileName, CompressionMethod compressionMethod, bool useUnicodeText)
Parameters
Type Name Description
System.String fileName

The name of the file to add.

CompressionMethod compressionMethod

The compression method to use.

System.Boolean useUnicodeText

Ensure Unicode text is used for name and comment for this entry.

Exceptions
Type Condition
System.ArgumentNullException

Argument supplied is null.

System.ObjectDisposedException

ZipFile has been closed.

System.NotImplementedException

Compression method is not supported for creating entries.

| Improve this Doc View Source

Add(String, String)

Add a file to the archive.

Declaration
public void Add(string fileName, string entryName)
Parameters
Type Name Description
System.String fileName

The name of the file to add.

System.String entryName

The name to use for the ZipEntry on the Zip file created.

Exceptions
Type Condition
System.ArgumentNullException

Argument supplied is null.

| Improve this Doc View Source

AddDirectory(String)

Add a directory entry to the archive.

Declaration
public void AddDirectory(string directoryName)
Parameters
Type Name Description
System.String directoryName

The directory to add.

| Improve this Doc View Source

BeginUpdate()

Begin updating this ZipFile archive.

Declaration
public void BeginUpdate()
See Also
BeginUpdate(IArchiveStorage)
CommitUpdate()
AbortUpdate()
| Improve this Doc View Source

BeginUpdate(IArchiveStorage)

Begin updating to this ZipFile archive.

Declaration
public void BeginUpdate(IArchiveStorage archiveStorage)
Parameters
Type Name Description
IArchiveStorage archiveStorage

The storage to use during the update.

| Improve this Doc View Source

BeginUpdate(IArchiveStorage, IDynamicDataSource)

Begin updating this ZipFile archive.

Declaration
public void BeginUpdate(IArchiveStorage archiveStorage, IDynamicDataSource dataSource)
Parameters
Type Name Description
IArchiveStorage archiveStorage

The archive storage for use during the update.

IDynamicDataSource dataSource

The data source to utilise during updating.

Exceptions
Type Condition
System.ObjectDisposedException

ZipFile has been closed.

System.ArgumentNullException

One of the arguments provided is null

System.ObjectDisposedException

ZipFile has been closed.

| Improve this Doc View Source

Close()

Closes the ZipFile. If the stream is owned then this also closes the underlying input stream. Once closed, no further instance methods should be called.

Declaration
public void Close()
Exceptions
Type Condition
System.IO.IOException

An i/o error occurs.

| Improve this Doc View Source

CommitUpdate()

Commit current updates, updating this archive.

Declaration
public void CommitUpdate()
Exceptions
Type Condition
System.ObjectDisposedException

ZipFile has been closed.

See Also
BeginUpdate()
AbortUpdate()
| Improve this Doc View Source

Create(Stream)

Create a new ZipFile whose data will be stored on a stream.

Declaration
public static ZipFile Create(Stream outStream)
Parameters
Type Name Description
System.IO.Stream outStream

The stream providing data storage.

Returns
Type Description
ZipFile

Returns the newly created ZipFile

Exceptions
Type Condition
System.ArgumentNullException

outStream

System.ArgumentException

outStream

| Improve this Doc View Source

Create(String)

Create a new ZipFile whose data will be stored in a file.

Declaration
public static ZipFile Create(string fileName)
Parameters
Type Name Description
System.String fileName

The name of the archive to create.

Returns
Type Description
ZipFile

Returns the newly created ZipFile

Exceptions
Type Condition
System.ArgumentNullException

fileName is null

| Improve this Doc View Source

Delete(ZipEntry)

Delete a ZipEntry from the archive.

Declaration
public void Delete(ZipEntry entry)
Parameters
Type Name Description
ZipEntry entry

The entry to delete.

| Improve this Doc View Source

Delete(String)

Delete an entry by name

Declaration
public bool Delete(string fileName)
Parameters
Type Name Description
System.String fileName

The filename to delete

Returns
Type Description
System.Boolean

True if the entry was found and deleted; false otherwise.

| Improve this Doc View Source

Dispose(Boolean)

Releases the unmanaged resources used by the this instance and optionally releases the managed resources.

Declaration
protected virtual void Dispose(bool disposing)
Parameters
Type Name Description
System.Boolean disposing

true to release both managed and unmanaged resources; false to release only unmanaged resources.

| Improve this Doc View Source

Finalize()

Finalize this instance.

Declaration
protected void Finalize()
| Improve this Doc View Source

FindEntry(String, Boolean)

Return the index of the entry with a matching name

Declaration
public int FindEntry(string name, bool ignoreCase)
Parameters
Type Name Description
System.String name

Entry name to find

System.Boolean ignoreCase

If true the comparison is case insensitive

Returns
Type Description
System.Int32

The index position of the matching entry or -1 if not found

Exceptions
Type Condition
System.ObjectDisposedException

The Zip file has been closed.

| Improve this Doc View Source

GetEntry(String)

Searches for a zip entry in this archive with the given name. String comparisons are case insensitive

Declaration
public ZipEntry GetEntry(string name)
Parameters
Type Name Description
System.String name

The name to find. May contain directory components separated by slashes ('/').

Returns
Type Description
ZipEntry

A clone of the zip entry, or null if no entry with that name exists.

Exceptions
Type Condition
System.ObjectDisposedException

The Zip file has been closed.

| Improve this Doc View Source

GetEnumerator()

Gets an enumerator for the Zip entries in this Zip file.

Declaration
public IEnumerator GetEnumerator()
Returns
Type Description
System.Collections.IEnumerator

Returns an System.Collections.IEnumerator for this archive.

Exceptions
Type Condition
System.ObjectDisposedException

The Zip file has been closed.

| Improve this Doc View Source

GetInputStream(ZipEntry)

Gets an input stream for reading the given zip entry data in an uncompressed form. Normally the ZipEntry should be an entry returned by GetEntry().

Declaration
public Stream GetInputStream(ZipEntry entry)
Parameters
Type Name Description
ZipEntry entry

The ZipEntry to obtain a data System.IO.Stream for

Returns
Type Description
System.IO.Stream

An input System.IO.Stream containing data for this ZipEntry

Exceptions
Type Condition
System.ObjectDisposedException

The ZipFile has already been closed

ZipException

The compression method for the entry is unknown

System.IndexOutOfRangeException

The entry is not found in the ZipFile

| Improve this Doc View Source

GetInputStream(Int64)

Creates an input stream reading a zip entry

Declaration
public Stream GetInputStream(long entryIndex)
Parameters
Type Name Description
System.Int64 entryIndex

The index of the entry to obtain an input stream for.

Returns
Type Description
System.IO.Stream

An input System.IO.Stream containing data for this entryIndex

Exceptions
Type Condition
System.ObjectDisposedException

The ZipFile has already been closed

ZipException

The compression method for the entry is unknown

System.IndexOutOfRangeException

The entry is not found in the ZipFile

| Improve this Doc View Source

SetComment(String)

Set the file comment to be recorded when the current update is commited.

Declaration
public void SetComment(string comment)
Parameters
Type Name Description
System.String comment

The comment to record.

Exceptions
Type Condition
System.ObjectDisposedException

ZipFile has been closed.

| Improve this Doc View Source

TestArchive(Boolean)

Test an archive for integrity/validity

Declaration
public bool TestArchive(bool testData)
Parameters
Type Name Description
System.Boolean testData

Perform low level data Crc check

Returns
Type Description
System.Boolean

true if all tests pass, false otherwise

Remarks

Testing will terminate on the first error found.

| Improve this Doc View Source

TestArchive(Boolean, TestStrategy, ZipTestResultHandler)

Test an archive for integrity/validity

Declaration
public bool TestArchive(bool testData, TestStrategy strategy, ZipTestResultHandler resultHandler)
Parameters
Type Name Description
System.Boolean testData

Perform low level data Crc check

TestStrategy strategy

The TestStrategy to apply.

ZipTestResultHandler resultHandler

The ZipTestResultHandler handler to call during testing.

Returns
Type Description
System.Boolean

true if all tests pass, false otherwise

Exceptions
Type Condition
System.ObjectDisposedException

The object has already been closed.

Explicit Interface Implementations

| Improve this Doc View Source

IDisposable.Dispose()

Declaration
void IDisposable.Dispose()

Implements

System.Collections.IEnumerable
System.IDisposable
  • Improve this Doc
  • View Source
In This Article
Back to top Copyright © 2000-2022 SharpZipLib Contributors