【问题标题】:VB.Net creating a zip file and extracting from a zip fileVB.Net 创建一个 zip 文件并从一个 zip 文件中提取
【发布时间】:2016-08-10 20:49:44
【问题描述】:

我有一个文件“C:\Users\Wangui Kamande\Desktop\social.txt”,我想将它压缩成一个 .zip 文件,位置为“C:\Users\Wangui Kamande\Desktop”。 我从 Microsoft 网站获得了以下代码,但我不太确定如何去做。 是不是“C:\Users\Wangui Kamande\Desktop\social.txt”文件必须在文件夹中?

mircosoft 网站的代码是:

Private Sub btnCompress_Click(sender As Object, e As EventArgs) Handles btnCompress.Click
        Dim startPath As String = "c:\example\start"
        Dim zipPath As String = "c:\example\result.zip"
        Dim extractPath As String = "c:\example\extract"
        ZipFile.CreateFromDirectory(startPath, zipPath)
        ZipFile.ExtractToDirectory(zipPath, extractPath)
End Sub

【问题讨论】:

    标签: vb.net


    【解决方案1】:

    您希望 ZipArchive.CreateEntryFromFile 扩展方法将单个文件添加到 zip...

    Using zip = ZipFile.Open("C:\Users\Wangui Kamande\Desktop\social.zip", ZipArchiveMode.Create)
        zip.CreateEntryFromFile("C:\Users\Wangui Kamande\Desktop\social.txt", "social.txt")
    End Using
    

    要从 zip 中提取单个文件,可以使用 ZipArchiveEntry.ExtractToFile 扩展方法,但您首先必须在 zip 中找到适当的条目。您可以使用 LINQ 按名称查找条目,如下所示:

    Using zip = ZipFile.Open("C:\Users\Wangui Kamande\Desktop\social.zip", ZipArchiveMode.Read)
        Dim entry = zip.Entries.Single(Function(x) x.Name = "social.txt")
        entry.ExtractToFile("C:\Users\Wangui Kamande\Desktop\social2.txt", True)
    End Using
    

    ExtractToFile 的第二个参数是可选的,指定是否覆盖现有文件。

    【讨论】:

    • 标记,谢谢。但是从 zip 文件中提取呢
    • @AndreaTand 如果您想提取 zip 中的所有文件,您已经拥有的 ZipFile.ExtractToDirectory(zipPath, extractPath) 代码可以工作。提取单个文件需要做更多的工作,所以如果您需要这样做,请告诉我。
    • 是的,这就是我想要的
    • @AndreaTand 我添加了一个提取单个文件的示例。
    • 谢谢马克。可以压缩该文件并为其提供密码。我在某处看到了源代码,但现在似乎找不到。
    猜你喜欢
    • 2011-12-27
    • 2012-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-30
    • 1970-01-01
    相关资源
    最近更新 更多