2011-07-05 15 views
5

Sto utilizzando il file Ionic.Zip.dll dalla libreria DotNetZip e sto cercando di eliminare il file ZIP dopo che è stato decompresso, ma non riesco a farlo.C# Eliminazione di un file .ZIP dopo la decompressione

Qui è il codice che ho attualmente:

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

che cosa sto facendo male qui?

+2

provare a eliminare il file fuori della vostra istruzione using. Potrebbe esserci ancora un blocco sul file. – used2could

+0

Il file ZIP è ancora in uso? Dovresti chiudere il file prima di provare a eliminare? – Brad

+0

Im Uso della stessa DLL e sto anche cercando di eliminare, dove hai ricevuto "File"? – Pomster

risposta

6

Hai trovato l'eccezione perché il file è ancora aperto quando si tenta di eliminare. Sposta lo File.Delete dopo il blocco using.

+0

Ahh! Adesso vedo, grazie! – Alan

3

Prova questo?

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

Grazie amico! Davvero aiutato :) – Alan

2

Sì! Ho la stessa risposta di Richard Schneider. Il file zip è ancora accessibile dal thread corrente, devi prima chiuderlo.

Prova questa

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

Sposta File.Delete fuori con staffe utilizzando (ZipFile zip = ZipFile.Read (nextVersion + ".zip"))

Problemi correlati