Xceed .NET Libraries Documentation
Listing the contents of a Zip archive using ZipReader
Welcome to Xceed .NET, .NET Standard and Xamarin Libraries! > Task-Based Help > Zip and streaming capabilities > Listing > Listing the contents of a Zip archive using ZipReader

The following example demonstrates how to list the contents of a Zip archive using the ZipReader.

static void ListContents()

{

  // Create a list to contain the zipped item names

  List<string> filenames = new List<string>();



  // TODO: Somehow obtain a stream to the source Zip file

  using( Stream zipFileStream = ObtainZipFileStream() )

  {

    // Create a Zip reader object around the stream.

    // Remember that ZipReader doesn't close the underlying stream given here

    using( ZipReader zipReader = new ZipReader( zipFileStream ) )

    {

      // Optional. Provide the default password for encrypted items in the archive

      zipReader.EncryptionPassword = "Password";



      // Create a large buffer for speed

      byte[] buffer = new byte[ 1024 * 1024 ];

     

      ZipItemLocalHeader zipItemLocalHeader;



      // While the reader finds local headers

      while( ( zipItemLocalHeader = zipReader.ReadItemLocalHeader() ) != null )

      {

        // Add the filename to our list

        filenames.Add( zipItemLocalHeader.FileName );



        // Skip over the data using our buffer. This avoids recreating one each time

        zipReader.ReadItemData( Stream.Null, buffer, 0, buffer.Length );

      }

     

      // Optional. Have the reader give us the zip ending header

      ZipEndHeader endHeader = zipReader.ReadEndHeader();

     

      // If the header contains a global zip comment

      if( endHeader != null && !String.IsNullOrEmpty( endHeader.ZipComment ) )

      {

        // TODO: Do something with the global zip comment

      }

    }

  }

}
Shared Sub ListContents()

  ' Create a list to contain the zipped item names

  Dim filenames As List(Of String) = New List(Of String)()



  ' TODO: Somehow obtain a stream to the source Zip file

  Using zipFileStream As Stream = ObtainZipFileStream()

    ' Create a Zip reader object around the stream.

    ' Remember that ZipReader doesn't close the underlying stream given here

    Using zipReader As New ZipReader(zipFileStream)

      ' Optional. Provide the default password for encrypted items in the archive

      zipReader.EncryptionPassword = "Password"



      ' Create a large buffer for speed

      Dim buffer(1024 * 1024 - 1) As Byte



      Dim zipItemLocalHeader As ZipItemLocalHeader



      ' While the reader finds local headers

      zipItemLocalHeader = zipReader.ReadItemLocalHeader()

      Do While zipItemLocalHeader IsNot Nothing

        ' Add the filename to our list

        filenames.Add(zipItemLocalHeader.FileName)



        ' Skip over the data using our buffer. This avoids recreating one each time

        zipReader.ReadItemData(Stream.Null, buffer, 0, buffer.Length)

        zipItemLocalHeader = zipReader.ReadItemLocalHeader()

      Loop



      ' Optional. Have the reader give us the zip ending header

      Dim endHeader As ZipEndHeader = zipReader.ReadEndHeader()



      ' If the header contains a global zip comment

      If endHeader IsNot Nothing AndAlso (Not String.IsNullOrEmpty(endHeader.ZipComment)) Then

        ' TODO: Do something with the global zip comment

      End If

    End Using

  End Using

End Sub