2014-04-04 26 views
5

Mam rozwiązanie do aktualizacji aplikacji korzystającej z interfejsu API DotNetZip (http://dotnetzip.codeplex.com/) do obsługi plików ZIP. Jedną z metod jest nadpisywanie plików w określonych folderach w następujący sposób.ExtractExistingFileAction.OverwriteSilently nie nadpisuje plików w danym katalogu

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

Gdzie: @ "c: \ SDA \ CantinaEscolar" gdzie są rozpakowane pliki wewnątrz zip (files).

Teraz, jeśli katalog zawiera już plik o tej samej nazwie, który zostanie rozpakowany, aplikacja zwraca błąd związany z tym, że plik już istnieje w katalogu.

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

OverwriteSilently Metoda ta nie powinna przesłonić rozpakowane pliki dyskretnie (bez żądania potwierdzenia użytkownika)?

Lub: Czy istnieje sposób, aby wymusić to nadpisanie w katalogu (typ f lub coś podobnego)?

Jeśli masz jakieś inne wskazówki, jak wykonać to zadanie, będę wdzięczny.

Odpowiedz

1

Zastąpić delikatnie można zastąpić plik. Nie wyrzuci wyjątku, jeśli plik jest już obecny, nawet jeśli plik jest tylko do odczytu.

Co nie może zrobić, to:

  • nadpisywania jeśli rozpakowujące odbywa się przy użyciu poświadczeń, który nie pozwala na to.
  • Zastąpić, gdy plik jest w użyciu.

Ten drugi może równie dobrze dotyczyć pliku "nomedoarquivo.exe". Ten plik wykonywalny może być uruchomiony podczas próby nadpisania.

Powiązane problemy