C # Удаление файла .ZIP после распаковки - PullRequest
5 голосов
/ 05 июля 2011

Я использую Ionic.Zip.dll из библиотеки DotNetZip и пытаюсь удалить ZIP-файл после его распаковки, но мне не удается это сделать.

Воткод, который у меня сейчас есть:

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

Что я здесь не так делаю?

Ответы [ 4 ]

7 голосов
/ 05 июля 2011

Вы получаете исключение, потому что файл все еще открыт, когда вы пытаетесь удалить.Переместите File.Delete после блока using.

4 голосов
/ 05 июля 2011

Попробуйте это?

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);
}
2 голосов
/ 05 июля 2011

Да!У меня тот же ответ, что и у Ричарда Шнайдера.Zip-файл по-прежнему доступен для текущего потока, сначала необходимо закрыть его.

Попробуйте это

 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 голосов
/ 29 апреля 2014

Переместить файл. Удалите его, используя скобки, используя (ZipFile zip = ZipFile.Read (nextVersion + ".zip")) *

...