You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

删除被ZipArchive读取的Zip文件遇访问拒绝,如何不依赖Dispose关闭归档?

问题说明

【免责声明】本问题与Dispose()的应用无关,也不涉及文件不可访问问题,旨在寻求不依赖对象释放的正确归档关闭方式。

可正常执行的代码

ZipFile.ExtractToDirectory(file, path, true);
File.Delete(file);

会抛出异常的代码

执行以下代码时,会抛出异常:无法访问文件'c:\temp...\file.zip',因为它正被另一进程使用

ZipFile.ExtractToDirectory(file, path, true);
ZipArchive archive = ZipFile.OpenRead(file);
File.Delete(file);

当前临时解决方法

我通过释放对象解决了该问题:

ZipFile.ExtractToDirectory(file, path, true);
ZipArchive archive = ZipFile.OpenRead(file);
archive.Dispose();
File.Delete(file);

但我认为释放对象并非正确的处理方式,应该存在一种在删除文件前直接关闭归档的方法。不过查阅ZipFile官方文档后并未找到相关方法,搜索到的结果也多是内存流处理、通用访问拒绝、手动设置文件属性等无关内容。


内容的提问来源于stack exchange,提问作者danilo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 19:04:59