public static void Unzip(string targetDirectoryPath, ZipArchive archive)
{
foreach (var zipEntry in archive.Entries)
{
var outFilePath = Path.Combine(targetDirectoryPath, zipEntry.FullName);
var outFileInfo = new FileInfo(outFilePath);
if (!outFileInfo.Directory.Exists)
{
outFileInfo.Directory.Create();
}
Stream outFileStream = null;
Stream inputStream = null;
try
{
outFileStream = new FileStream(
outFilePath,
FileMode.CreateNew,
FileAccess.Write,
FileShare.None);
inputStream = zipEntry.Open();
inputStream.CopyTo(outFileStream);
}
finally
{
outFileStream.SafeDispose();
inputStream.SafeDispose();
}
}
}
}