我正在使用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);
}
}
我在这里做错了什么?
答案 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"))