Problem
Die ZipFile.ExtractToDirectory(zip,target)-Methode in C# überschreibt keine vorhandenen Dateien, sondern schmeisst eine Exception.
The ZipFile.ExtractToDirectory(zip,target)-method in c# is not overwriting existing files, but throws an exception
Vorraussetzung – Prerequirements
.NET Framework der Version 4.5
Referenzen/References:
System.IO.Compression.dll
System.IO.Compression.FileSystem.dll
You have to import the using
using System.IO.Compression;
Ansatz – Approach
Durch die Iteration über das ZIP-Archiv lassen sich die einzelnen Dateien entpacken, wobei die Methode System.IO.Compression.ZipArchiveEntry.ExtractToFile(string path, bool overwrite) ein Überschreiben erlaubt.
The iteration on System.IO.Compression.ZipArchive with System.IO.Compression.ZipArchiveEntry.ExtractToFile(string path, bool overwrite) allows to overwrite existing files.
Lösung – Solution
public void ZipFileExtractToDirectory(string zipPath, string extractPath)
{
using(System.IO.Compression.ZipArchive archive = ZipFile.OpenRead(zipPath))
{
foreach(ZipArchiveEntry entry in archive.Entries)
{
string completeFileName = Path.Combine(extractPath, entry.FullName);
string directory = Path.GetDirectoryName(completeFileName);
if (!Directory.Exists(directory))
{
Directory.CreateDirectory(directory);
}
entry.ExtractToFile(completeFileName, true);
}
}
}