Xceed .NET Libraries Documentation
In This Topic
    Using the ByteProgression event (ZipWriter) Snippet
    In This Topic
    The following examples demonstrate how to use ZipWriter's ByteProgression event, as well as its event arguments.
    using System.IO;
    using Xceed.Zip.ReaderWriter;
    //The target Zip archive.
    using (FileStream fileStream1 = new FileStream(@"d:\testOutput\test.zip",
      FileMode.Create, FileAccess.Write))
    {
      //Create a ZipWriter object around the stream.
      Xceed.Zip.ReaderWriter.ZipWriter zipWriter1 =
        new Xceed.Zip.ReaderWriter.ZipWriter(fileStream1);
      //Subscribe to the ByteProgression event
      zipWriter1.ByteProgression += new
        EventHandler<ZipWriterByteProgressionEventArgs>(zipWriter1_ByteProgression);
      DirectoryInfo directoryInfo = new DirectoryInfo(@"d:\test\");
      if (directoryInfo.Exists)
      {
        FileInfo[] files = directoryInfo.GetFiles("*.*",
          SearchOption.AllDirectories);
        foreach (FileInfo file in files)
        {
          //Create ZipItemLocalHeader for current item and write to archive.
          ZipItemLocalHeader zipItemLocalHeader1 = new ZipItemLocalHeader
            (file.Name);
          zipWriter1.WriteItemLocalHeader(zipItemLocalHeader1);
          byte[] buffer = new byte[1024];
          int read = 0;
          using (FileStream fs = file.OpenRead())
          {
            //Read the current item's data
            while ((read = fs.Read(buffer, 0, buffer.Length)) != 0)
            {
              //Write the current item's data to the Zip archive
              zipWriter1.WriteItemData(buffer, 0, read);
            }
          }
        }
        //Close the Zip archive
        zipWriter1.CloseZipFile();
        Console.WriteLine("Zip archive created.");
      }
    }
    
    //The ByteProgression event's handler. Demonstrates the use of
    //the properties of ZipWriterByteProgressionEventArgs.
    static void zipWriter1_ByteProgression(object sender, 
      ZipWriterByteProgressionEventArgs e)
    {
      Console.WriteLine("Item {0}: CompressionMethod = {1},
        CompressionLevel = {2}.", e.ZipItemLocalHeader.FileName,
        e.ZipItemLocalHeader.CompressionMethod,
        e.ZipItemLocalHeader.CompressionLevel);
    }
    Imports System.IO
    Imports Xceed.Zip.ReaderWriter
    'The target Zip archive.
    Using fileStream1 As New FileStream("d:\testOutput\test.zip",
      FileMode.Create, FileAccess.Write)
    
      'Create a ZipWriter object around the stream.
      Dim zipWriter1 As New Xceed.Zip.ReaderWriter.ZipWriter(fileStream1)
      'Subscribe to the ByteProgression event.
      AddHandler zipWriter1.ByteProgression, AddressOf Of
        ZipWriterByteProgressionEventArgs
    
      Dim directoryInfo As New DirectoryInfo("d:\test\")
      If directoryInfo.Exists Then
        Dim files As FileInfo() = directoryInfo.GetFiles("*.*",
          SearchOption.AllDirectories)
        For Each file As FileInfo In files
          'Create ZipItemLocalHeader for current item and write to archive.
          Dim zipItemLocalHeader1 As New ZipItemLocalHeader(file.Name)
          zipWriter1.WriteItemLocalHeader(zipItemLocalHeader1)
          Dim buffer As Byte() = New Byte(1023){}
          Dim read As Integer = 0
          Using fs As FileStream = file.OpenRead()
            'Read the current item's data
            read = fs.Read(buffer, 0, buffer.Length)
            Do While (read <> 0)
              'Write the current item's data to the Zip archive
              zipWriter1.WriteItemData(buffer, 0, read)
              read = fs.Read(buffer, 0, buffer.Length)
            Loop
          End Using
        Next file
        'Close the Zip archive
        zipWriter1.CloseZipFile()
        Console.WriteLine("Zip archive created.")
      End If
    End Using
    
    'The ByteProgression event's handler. Demonstrates the use of
    'the properties of ZipWriterByteProgressionEventArgs.
    Shared Sub zipWriter1_ByteProgression(ByVal sender As Object, ByVal e As ZipWriterByteProgressionEventArgs)
      Console.WriteLine("Item {0}: CompressionMethod = {1},
        CompressionLevel = {2}.", e.ZipItemLocalHeader.FileName,
        e.ZipItemLocalHeader.CompressionMethod,
        e.ZipItemLocalHeader.CompressionLevel)
    End Sub