【问题标题】:Error: You can't create entries as long as previously created entries are still open错误:只要之前创建的条目仍处于打开状态,您就无法创建条目
【发布时间】:2020-06-27 10:51:45
【问题描述】:

我在 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.net visual-studio-2010 zip .net-4.5


    【解决方案1】:

    执行您想要的操作的代码可以比这简单得多。引用 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 方法,看看它是否会在一次调用中完成您想要的操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-17
      • 1970-01-01
      • 1970-01-01
      • 2016-12-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多