vb.net - 错误:只要之前创建的条目仍处于打开状态,您就无法创建条目
问题描述
我在 VB.NET 中创建了一个 Zip maker,但我遇到了这个错误:
只要之前创建的条目仍处于打开状态,您就无法创建条目。
(翻译自法语:Impossible de créer des entrées tant que les entrées créées précédemment sont toujours ouvertes。)
我的代码是:
Dim filearchive As FileStream = New FileStream(My.Settings.archive_path, FileMode.CreateNew) 暗淡存档 As ZipArchive = New ZipArchive(filearchive, ZipArchiveMode.Create) 对于 FileIO.FileSystem.GetFiles(My.Settings.contacts_path) 中的每个文件 Dim crentry As ZipArchiveEntry = archive.CreateEntry(File) filearchive.CopyTo(crentry.Open()) ProgressBar1.Increment(1) Label3.Text = ProgressBar1.Value.ToString + "%" 下一个
我在 VS 2010 中使用 .NET Framework 4.5,并且在我的类中导入了 System.IO.Compression
有人能帮助我吗 ?
解决方案
做你想做的事情的代码可以比这简单得多。引用System.IO.Compression.dll和System.IO.Compression.FileSystem.dll然后执行以下操作:
Using archive = ZipFile.Open(My.Settings.archive_path, ZipArchiveMode.Create)
For Each filePath In Directory.EnumerateFiles(My.Settings.contacts_path)
archive.CreateEntryFromFile(filePath, Path.GetFileName(filePath))
'...
Next
End Using
这将仅使用文件名命名每个条目。如果您想要完整的文件路径,请省略Path.GetFileName
调用。
您还可以查看该ZipFile.CreateFromDirectory
方法,看看它是否会在一次调用中完成您想要的操作。
推荐阅读
- sql - 涉及别名时如何删除尾随逗号?
- windows - 如何在 Windows 的 VSCode 中使用 chromium 浏览器启动调试会话
- git - Web.config 早在提交历史中就被提交了,有没有办法删除它,所以没有人可以在任何提交中看到它?
- python - 删除熊猫中所有带有特殊字符的行
- javascript - 如何在 Chrome 上自动播放背景视频
- ubuntu - 错误:验证失败:无法识别“”:版本“etcd.database.coreos.com/v1beta2”中类型“EtcdCluster”没有匹配项
- vba - 编码以从查询结果中的文件路径打印 PDF 文件
- powershell - 签署脚本 - 在部署期间提交源代码控制或签名?
- linux - 如何设置半小时和 45 分钟的时区而不用担心 Linux 中 DST 的变化?
- pandas - 使用多索引更新单列时创建重复行