How to compress a directory into a zip file programmatically

33,890

Solution 1

Using DotNetZip, there's an AddDirectory() method on the ZipFile class that does what you want:

using (var zip = new Ionic.Zip.ZipFile())
{
    zip.AddDirectory("DirectoryOnDisk", "rootInZipFile");
    zip.Save("MyFile.zip");
}

This example, and many others, are available on codeplex.

Solution 2

Take a look at one of these API's:

Solution 3

ZipFile.CreateFromDirectory(<path of folder you need to zip>, <path of zip file with .zip in the end>, CompressionLevel.Fastest, true);
Share:
33,890
turnip_cyberveggie
Author by

turnip_cyberveggie

Polyglot programmer from Bangalore, India

Updated on July 09, 2022

Comments

  • turnip_cyberveggie
    turnip_cyberveggie almost 2 years

    I want to compress an entire directory which can have any number of subdirectories into a single ZIP file.

    I am able to compress a single file into a zip file programmatically.

    To compress an entire directory, i can think of a recursive program that walks through each subdirectory and compresses it.

    But Is there any simple way to compress the entire folder using the similar code, without having to write any recursive functions?

  • SerG
    SerG about 9 years
    DotNetZip is not for production. It contains some crucial bugs. I already forget which exactly, but I've concluded once after long investigations that in current state it's absolutely unreliable.
  • TEK
    TEK about 8 years
    Considering DotNetZip and SharpZipLib are both abandonware, an actual .NET solution is ideal.
  • Scott
    Scott almost 8 years
    I can never remember the syntax for this. Don't forget to add a reference to System.IO.Compression.FileSystem and a using statement for System.IO.Compression.