Xceed .NET Libraries Documentation
ZipArchive Constructor(AbstractFile)
Example 


Xceed.Zip Assembly > Xceed.Zip Namespace > ZipArchive Class > ZipArchive Constructor : ZipArchive Constructor(AbstractFile)
An Xceed.FileSystem.AbstractFile object that represents the ZIP file to access. For example, to access/create a zip file in memory use a Xceed.FileSystem.MemoryFile. If the zip file is on disk, then use a Xceed.FileSystem.DiskFile and so on.
Initializes a new instance of the ZipArchive class.
Syntax
'Declaration
 
Public Function New( _
   ByVal zipFile As AbstractFile _
)
'Usage
 
Dim zipFile As AbstractFile
 
Dim instance As New ZipArchive(zipFile)
public ZipArchive( 
   AbstractFile zipFile
)

Parameters

zipFile
An Xceed.FileSystem.AbstractFile object that represents the ZIP file to access. For example, to access/create a zip file in memory use a Xceed.FileSystem.MemoryFile. If the zip file is on disk, then use a Xceed.FileSystem.DiskFile and so on.
Remarks

It is important to always use the same instance of the AbstractFile representing the actual zip file when creating new instances of either ZipArchive, ZippedFile or ZippedFolder; otherwise, when updating the zip file through different instances, information can be lost. Instances obtained from calls to GetFile, GetFiles (and all) are safe, and share the same original AbstractFile.

Example
The code below shows a possible loss of data:
DiskFile source1 = new DiskFile( @"D:\First.txt" );
DiskFile source2 = new DiskFile( @"D:\Second.txt" );

DiskFile file1 = new DiskFile( @"D:\Danger.zip" );
DiskFile file2 = new DiskFile( @"D:\Danger.zip" );

ZipArchive zip1 = new ZipArchive( file1 );
ZipArchive zip2 = new ZipArchive( file2 );

zip1.BeginUpdate();
source1.CopyTo( zip1, true );

zip2.BeginUpdate();
source2.CopyTo( zip2, true );
zip2.EndUpdate();  // Zip file updated with "Second.txt"
zip1.EndUpdate();  // Zip file updated with "First.txt" but "Second.txt" gets lost
                   
The correct way to deal with many instances of a ZipArchive is:

DiskFile source1 = new DiskFile( @"D:\First.txt" );
DiskFile source2 = new DiskFile( @"D:\Second.txt" );

DiskFile singleFile = new DiskFile( @"D:\Danger.zip" );

ZipArchive zip1 = new ZipArchive( singleFile );
ZipArchive zip2 = new ZipArchive( singleFile );

zip1.BeginUpdate();
source1.CopyTo( zip1, true );

zip2.BeginUpdate();
source2.CopyTo( zip2, true );
zip2.EndUpdate();  // Zip file not updated right away
zip1.EndUpdate();  // Zip file updated with both "First.txt" and "Second.txt"
Requirements

Target Platforms: Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

See Also

Reference

ZipArchive Class
ZipArchive Members
Overload List