Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to zip all files in folder

Tags:

c#

zip

I have a folder "D:\folder" and in this folder I have 10 files that I need to zip into a new archive "D:\folder.zip".

Currently I'm using ICSharpCode.SharpZipLib but this is not a mandatory requirement, so other solutions are acceptable.

The problem I'm facing is that when I try to execute the method FileStream fs = File.OpenRead(@"D:\folder") I get an error because of access to the specifided path.

How can I zip these files in a simple way?

like image 384
Matrosov Oleksandr Avatar asked May 17 '12 21:05

Matrosov Oleksandr


People also ask

Can you zip a folder with subfolders?

Creating a zip folder allows files to be organized and compressed to a smaller file size for distribution or saving space. Zip folder can have subfolders within this main folder.


2 Answers

DotNetZip is much easier to use than SharpZipLib, example of zipping all files in folder :

  using (ZipFile zip = new ZipFile())
  {
    zip.AddDirectory(@"MyDocuments\ProjectX", "ProjectX");
    zip.Save(zipFileToCreate);
  }

This is a an example from this page :

http://dotnetzip.codeplex.com/wikipage?title=CS-Examples&referringTitle=Examples

like image 107
Antonio Bakula Avatar answered Oct 23 '22 05:10

Antonio Bakula


I also agree with the suggestion of Antonio Bakula to use DotNetZip instead of SharpZipLib.

.NET 4.5 includes the new ZipArchive and ZipFile classes for manipulating .zip files. With this support what you are trying to do is accomplished by:

ZipFile.CreateFromDirectory(@"D:\Folder", @"Folder.zip");

As a side note the reason you get the error is because you're trying to open a directory instead of a file. The File.OpenRead is used to open a file for read, since you provide a directory, you get the error. If you want to enumerate the files or directories inside a specific folder you can instead use Directory.EnumerateFiles or Directory.EnumerateDirectories.

like image 25
João Angelo Avatar answered Oct 23 '22 05:10

João Angelo