In this post, I’ll cover some of the things that you can do with the System.IO.Compression namespace. We’ll discuss how you can use this namespace to manipulate zip files.
Basics
Let’s start with simply listing the contents of a zip file:
using ZipArchive archive = ZipFile.OpenRead(zipFilePath);
foreach (ZipArchiveEntry entry in archive.Entries)
{
Console.WriteLine(entry.FullName);
}
Let’s build a new zip file from the entire contents of a directory:
ZipFile.CreateFromDirectory(sourceFolderPath, zipFilePath);
You can also use this to extract from a zip file - for example, we can extract the first file:
using ZipArchive archive = ZipFile.OpenRead(zipFilePath);
var first = archive
.Entries
.First();
first
.ExtractToFile(Path.Combine(extractPath, first.FullName), true);
Parallel
You can also extract files from the archive in parallel. For example:
using ZipArchive archive = ZipFile.OpenRead(zipFilePath);
Parallel.ForEach(archive.Entries, entry =>
{
string entryPath = Path.Combine(extractPath, entry.FullName);
entry.ExtractToFile(entryPath, true);
});