删除被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
相关产品推荐
相关产品推荐

