2014-04-04 9 views
5

Ich habe eine Lösung für die Aktualisierung einer Anwendung, die die API DotNetZip (http://dotnetzip.codeplex.com/) für die Verarbeitung von ZIP-Dateien verwendet. Eine Methode besteht darin, Dateien in bestimmten Ordnern wie folgt zu überschreiben.ExtractExistingFileAction.OverwriteSilently überschreibt nicht die Dateien in einem bestimmten Verzeichnis

ZipFile zipFile = ZipFile.Read(file); 
    { 
     foreach (ZipEntry zipEntry in zipFile) 
     { 
      zipEntry.Extract(@"C:\IASD\CantinaEscolar", ExtractExistingFileAction.OverwriteSilently); 
     } 
    } 

Wo: @ "c: \ SDA \ CantinaEscolar" ist, wo die Dateien innerhalb des (files) Zip entpackt werden.

Wenn das Verzeichnis jetzt bereits eine Datei mit demselben Namen enthält, die entpackt wird, gibt die Anwendung einen Fehler zurück, der sich auf die bereits im Verzeichnis vorhandene Datei bezieht.

System.IO.IOException: The file 'c:\IASD\CantinaEscola\nomedoarquivo.exe' already exists 

OverwriteSilently Diese Methode sollte die entpackten Dateien geräuschlos nicht außer Kraft setzen (ohne Bestätigung Benutzer auffordert)?

Oder: Gibt es eine Möglichkeit, dies im Verzeichnis überschrieben (-type f oder etwas) zu erzwingen?

Wenn Sie andere Tipps zur Durchführung dieser Aufgabe besitzen, werde ich Ihnen dankbar sein.

Antwort

1

OverwriteSilently kann eine Datei überschreiben. Es wird keine Ausnahme ausgelöst, wenn die Datei bereits vorhanden ist, auch wenn die Datei schreibgeschützt ist.

Was kann es nicht tun, ist:

  • überschreiben, wenn das Aufgehen unter den Anmeldeinformationen erfolgt, die es nicht erlauben.
  • überschreiben, wenn die Datei verwendet wird.

Letzteres könnte sehr wohl für die Datei "nomedoarquivo.exe" der Fall sein. Diese ausführbare Datei könnte während des Überschreibens ausgeführt werden.

Verwandte Themen