C#解压缩后删除.ZIP文件

时间:2011-07-05 02:18:02

标签: c# zip unzip delete-file

我正在使用DotNetZip库中的Ionic.Zip.dll,我试图在完成解压缩后删除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 个答案:

答案 0 :(得分:7)

您收到异常,因为尝试删除时文件仍处于打开状态。将File.Delete移至using阻止之后。

答案 1 :(得分:4)

试试这个?

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 :(得分:2)

是的!我和Richard Schneider的答案相同。当前线程仍然可以访问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);
                }
            }

答案 3 :(得分:0)

使用括号移动File.Delete(ZipFile zip = ZipFile.Read(nextVersion +" .zip"))