using System;
using System.Collections.Generic;
using System.IO;
using System.IO.Compression;
using System.Linq;
using System.Web;
namespace GreenTree.Nachtragsmanagement.Web.Extensions
{
public static class ZipArchiveExtension
{
///
/// Extracts all entries in a zip file to a target directory on the destination file system
///
/// The archive.
/// The target directory path.
/// Overwrite existing files.
public static void ExtractToDirectory(this ZipArchive archive, string destinationDirectoryName, bool overwrite)
{
if (!overwrite)
{
archive.ExtractToDirectory(destinationDirectoryName);
return;
}
foreach (var file in archive.Entries)
{
var completeFileName = Path.Combine(destinationDirectoryName, file.FullName);
var directory = Path.GetDirectoryName(completeFileName);
if (!Directory.Exists(directory))
Directory.CreateDirectory(directory);
if (file.Name != "")
{
var memoryStream = file.Open();
File.Delete(completeFileName);
using (var fileStream = new FileStream(completeFileName, FileMode.CreateNew, FileAccess.ReadWrite))
{
memoryStream.CopyTo(fileStream);
}
//file.ExtractToFile(completeFileName, true);
}
}
}
}
}