C#.NET: ZIP Dateien entpacken und im Zielverzeichnis ggf. überschreiben / Uncomrpess ZIP to a folder and overwrite existing

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);
    }
  }
}

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.