С# Удаление файла .ZIP после распаковки

Я использую 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);
    }
}

Что я здесь делаю неправильно?


person Alan    schedule 05.07.2011    source источник
comment
попробуйте удалить файл вне вашего оператора using. Файл все еще может быть заблокирован.   -  person used2could    schedule 05.07.2011
comment
ZIP-файл все еще используется? Следует ли закрывать файл перед попыткой удаления?   -  person Brad    schedule 05.07.2011
comment
Я использую ту же Dll, а также пытаюсь удалить, откуда вы взяли «Файл»?   -  person Pomster    schedule 01.08.2012


Ответы (4)


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

person Richard Schneider    schedule 05.07.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);
}
person Naeem Sarfraz    schedule 05.07.2011
comment
Спасибо друг! Реально помогло :) - person Alan; 05.07.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);
                }
            }
person Tran Dang    schedule 05.07.2011

Переместите File.Delete за пределы скобок, используя (ZipFile zip = ZipFile.Read(nextVersion + ".zip"))

person Abhijit    schedule 29.04.2014