首页 > 解决方案 > 错误:只要之前创建的条目仍处于打开状态,您就无法创建条目

问题描述

我在 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

有人能帮助我吗 ?

标签: vb.netvisual-studio-2010zip.net-4.5

解决方案


做你想做的事情的代码可以比这简单得多。引用System.IO.Compression.dllSystem.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方法,看看它是否会在一次调用中完成您想要的操作。


推荐阅读