2011-07-05 13 views
5

Estoy usando Ionic.Zip.dll de la biblioteca DotNetZip y estoy tratando de eliminar el archivo ZIP después de que termine de descomprimir, pero no puedo hacerlo.C# Eliminar un archivo .ZIP después de descomprimir

Aquí está el código que tengo actualmente:

using (ZipFile zip = ZipFile.Read(nextVersion + ".zip")) 
{ 
    zip.ExtractAll(Directory.GetCurrentDirectory(), ExtractExistingFileAction.OverwriteSilently); 

    try 
    { 
     File.Delete(nextVersion + ".zip"); 
    } 
    catch (Exception) 
    { 
     MessageBox.Show("Could not delete ZIP!"); 
     Environment.Exit(1); 
    } 
} 

¿qué estoy haciendo mal aquí?

+2

intentar eliminar el archivo fuera de su instrucción using. Todavía puede haber un bloqueo en el archivo. – used2could

+0

¿El archivo ZIP aún está en uso? ¿Deberías cerrar el archivo antes de intentar eliminarlo? – Brad

+0

Im Usar el mismo Dll y también estoy intentando eliminar, ¿De dónde sacaste 'File' From? – Pomster

Respuesta

6

Estás recibiendo la excepción porque el archivo aún está abierto cuando intentas eliminarlo. Mueva el File.Delete hasta después del bloque using.

+0

Ahh! Ahora veo, ¡gracias! – Alan

3

¿Intenta esto?

try { 
    using (ZipFile zip = ZipFile.Read(nextVersion + ".zip")) 
    { 
     zip.ExtractAll(Directory.GetCurrentDirectory(), ExtractExistingFileAction.OverwriteSilently); 
    } 
    File.Delete(nextVersion + ".zip"); 
} 
catch (Exception) { 
    MessageBox.Show("Could not delete ZIP!"); 
    Environment.Exit(1); 
} 
+0

¡Gracias amigo! Realmente ayudado :) – Alan

2

Sí! Tengo la misma respuesta que Richard Schneider. Al archivo zip todavía se accede por el hilo actual, primero debe cerrarlo.

probar este

using (ZipFile zip = ZipFile.Read(nextVersion + ".zip")) 
      { 
       zip.ExtractAll(Directory.GetCurrentDirectory(), ExtractExistingFileAction.OverwriteSilently); 
       zip.Dispose(); 
       try 
       { 
        File.Delete(nextVersion + ".zip"); 
       } 
       catch (Exception) 
       { 
        MessageBox.Show("Could not delete ZIP!"); 
        Environment.Exit(1); 
       } 
      } 
0

Mover File.Delete exterior mediante el uso de soportes (ZipFile postal = ZipFile.Read (nextVersion + ".zip"))

Cuestiones relacionadas