Xceed .NET Libraries Documentation
Creating a Zip archive using ZipWriter Snippet

The following example demonstrates how to create a Zip archive locally using the files in a test directory.

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 the ZipWriter object around the stream.

  Xceed.Zip.ReaderWriter.ZipWriter zipWriter1 =

    new Xceed.Zip.ReaderWriter.ZipWriter(fileStream1);

  //The source directory.

  DirectoryInfo directoryInfo = new DirectoryInfo(@"d:\test\");

  if (directoryInfo.Exists)

  {

    //Get files in the current directory and all subdirectories.

    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);

          Console.WriteLine("Writing {0}. {1} bytes written.",

            zipItemLocalHeader1.FileName, read);

        }

      }

    }

    //Close the Zip archive. Writes the archive's central header.

    zipWriter1.CloseZipFile();

    Console.WriteLine("Zip archive created.");

  }

}
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 the ZipWriter object around the stream.

  Dim zipWriter1 As New Xceed.Zip.ReaderWriter.ZipWriter(fileStream1)

  'The source directory

  Dim directoryInfo As New DirectoryInfo("d:\test\")

  If directoryInfo.Exists Then



    'Get files in the current directory and all subdirectories.

    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)

          Console.WriteLine("Writing {0}. {1} bytes written.", zipItemLocalHeader1.FileName, read)

          read = fs.Read(buffer, 0, buffer.Length)

        Loop

      End Using

    Next file

    'Close the Zip archive. Writes the archive's central header.

    zipWriter1.CloseZipFile()

    Console.WriteLine("Zip archive created.")

  End If

End Using