6 Stimmen

C# Löschen einer .ZIP-Datei nach dem Entpacken

Ich verwende die Ionic.Zip.dll aus der DotNetZip-Bibliothek und versuche, die ZIP-Datei nach dem Entpacken zu löschen, aber ich schaffe es nicht, dies zu tun.

Hier ist der Code, den ich derzeit habe:

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

Was mache ich hier falsch?

2 Stimmen

Versuchen Sie, die Datei außerhalb Ihrer using-Anweisung zu löschen. Möglicherweise ist die Datei noch gesperrt.

0 Stimmen

Ist die ZIP-Datei noch in Gebrauch? Sollten Sie die Datei schließen, bevor Sie versuchen, sie zu löschen?

0 Stimmen

Ich verwende die gleiche Dll und versuche auch zu löschen, woher haben Sie die Datei?

9voto

Richard Schneider Punkte 34159

Sie erhalten die Ausnahme, weil die Datei noch geöffnet ist, wenn Sie versuchen, sie zu löschen. Verschieben Sie die File.Delete nach dem using Block.

4voto

Naeem Sarfraz Punkte 7148

Versuchen Sie das?

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

3voto

Tran Dang Punkte 158

Ja, ich habe die gleiche Antwort wie Richard Schneider. Auf die Zip-Datei wird immer noch vom aktuellen Thread zugegriffen, Sie müssen ihn erst schließen.

Versuchen Sie dies

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

0voto

Abhijit Punkte 105

Verschieben von File.Delete außerhalb von using-Klammern using (ZipFile zip = ZipFile.Read(nextVersion + ".zip"))

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X