Add Folders to Root of Zip Using Ionic Zip Library

Movieboy picture Movieboy · Oct 29, 2012 · Viewed 18.4k times · Source

what I'm trying to do is add a list of folders and files all to the root of my Zip file, using the Ionic Zip library (c#).

Here's what I have so far

string k = "B:/My Documents/Workspace";
private void button1_Click(object sender, EventArgs e)
{
   using (ZipFile zip = new ZipFile())
   {   
       //add directory, give it a name
       zip.AddDirectory(k);
       zip.Save("t.zip");
   }
}

Now, I want my zip to be looking like this.

  • t.zip
    • Random Files and Folder

But it's looking like this.

  • t.zip
    • t (folder)
      • Random files and folders

Any help would be appreciated, Thank you.

Answer

Slider345 picture Slider345 · Oct 29, 2012

The default behavior of AddDirectory should add the contents of the directory to the root path in the zipfile, without creating a subdirectory.

There is a second overload of AddDirectory, which adds a parameter to specify what the path of the added files should be within the zipfile. But since you want the files to go into the root directory, this would just be an empty string.

zip.AddDirectory(k, "");

See this documentation for more info.

None of this explains where your subfolder is coming from. I suspect the problem is from something else in the code. It might be useful to run this in debug and see what 'k' equals when you call AddDirectory, or to print out all the "entries" in the zip.Entries collection.