Xceed .NET Libraries Documentation
Xceed.Zip Assembly / Xceed.Zip Namespace / ZippedFolder Class / ZippedFolder Constructor / ZippedFolder Constructor(FileSystemEvents,Object,AbstractFile,String)
A Xceed.FileSystem.FileSystemEvents object that will be used to raise events. Cannot be NULL.
Opaque data that will be passed back to the event handler when an event is raised.
Xceed.FileSystem.AbstractFile object that represents the ZIP file to access.
Fully-qualified name of the folder stored in the ZIP file. This folder may or may not exist in the ZIP file.
Example


In This Topic
    ZippedFolder Constructor(FileSystemEvents,Object,AbstractFile,String)
    In This Topic
    Initializes a new instance of the ZippedFolder class enabling event notifications while the object is being created.
    Syntax
    'Declaration
     
    
    Public Function New( _
       ByVal events As FileSystemEvents, _
       ByVal userData As Object, _
       ByVal zipFile As AbstractFile, _
       ByVal folderName As String _
    )
    'Usage
     
    
    Dim events As FileSystemEvents
    Dim userData As Object
    Dim zipFile As AbstractFile
    Dim folderName As String
     
    Dim instance As New ZippedFolder(events, userData, zipFile, folderName)

    Parameters

    events
    A Xceed.FileSystem.FileSystemEvents object that will be used to raise events. Cannot be NULL.
    userData
    Opaque data that will be passed back to the event handler when an event is raised.
    zipFile
    Xceed.FileSystem.AbstractFile object that represents the ZIP file to access.
    folderName
    Fully-qualified name of the folder stored in the ZIP file. This folder may or may not exist in the ZIP file.
    Remarks

    Once the ZippedFolder object is created, it does not keep a reference on the event object.

    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 may 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"
    Example
    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 may 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"
    Supported Frameworks

    .NET: net5.0, net5.0-windows, net6.0, net6.0-macos, net6.0-windows, net7.0, net7.0-macos, net7.0-windows, net8.0, net8.0-browser, net8.0-macos, net8.0-windows, net9.0, net9.0-browser, net9.0-macos, net9.0-windows, net10.0, net10.0-browser, net10.0-macos, net10.0-windows.

    .NET Standard: netstandard2.0, netstandard2.1

    .NET Framework: net20, net35, net40, net403, net45, net451, net452, net46, net461, net462, net463, net47, net471, net472, net48, net481.

    See Also