using System.IO.Compression;
public static void Main()
var dir = new DirectoryInfo(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "ExtractZipFileToDirectory"));
var zip = new FileInfo(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "ZipFileDirectory", "test.zip"));
Directory.CreateDirectory(zip.Directory.FullName);
using (ZipArchive archive = zip.OpenZipFile(ZipArchiveMode.Update))
archive.CreateEntry("NewEntry.txt");
string extractPath = dir.FullName;
if (!extractPath.EndsWith(Path.DirectorySeparatorChar.ToString(), StringComparison.Ordinal))
extractPath += Path.DirectorySeparatorChar;
using (var archive = zip.OpenReadZipFile())
foreach (ZipArchiveEntry entry in archive.Entries)
Console.WriteLine(entry.FullName);
public static void CreateZipFile()
var dir = new DirectoryInfo(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "TxtFileDirectory"));
var dir2 = new DirectoryInfo(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "ZipFileDirectory"));
var @this = new FileInfo(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "TxtFileDirectory", "test.txt"));
var zip = new FileInfo(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "ZipFileDirectory", "test.zip"));
Directory.CreateDirectory(@this.Directory.FullName);
Directory.CreateDirectory(zip.Directory.FullName);
using (FileStream stream = @this.Create())
@this.Directory.CreateZipFile(zip);