在 Visual Basic .NET 中提取 Zip 文件

Posted

技术标签:

【中文标题】在 Visual Basic .NET 中提取 Zip 文件【英文标题】:Extracting Zip File in Visual Basic .NET 【发布时间】:2016-11-04 16:43:24 【问题描述】:

我正在开发一个 Visual Basic 项目,但我遇到了一些超级简单的问题。解压文件。

我有以下导入

`Imports System.Net
Imports System
Imports System.IO
Imports System.IO.Compression`

我的参考文献如下

System
System.Core
System.Data
System.Data.DataSetExtensions
System.Deployment
System.Drawing
System.IO.Compression
System.IO.Compression.FileSystem
System.Net.Http
System.Windows.Forms
System.Xml
System.Xml.Linq

所以我的代码应该做的是检查是否安装了软件, 如果不是,它将下载一个已安装的 zip 文件。

下载 zip 后,应将其解压缩并运行设置。

除此代码块外,一切正常:

Private Sub client_OMSADownloadCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.AsyncCompletedEventArgs)
    MessageBox.Show("Download Complete")
    Try
        ZipFile.ExtractToDirectory("C:\end.zip", "C:\end")
    Catch ex As Exception
        MsgBox("Can't Extract file" & vbCrLf & ex.Message)
    End Try
End Sub

    Public NotInheritable Class ZipFile
    Public Shared Sub ExtractToDirectory(
    sourceArchiveFileName As String,
    destinationDirectoryName As String
)
    End Sub
End Class

我没有例外,它只是不解压缩,它基本上跳过了块。

请帮忙!

【问题讨论】:

您是否收到任何错误消息? 没有没有错误(见编辑)只是没有运行 为什么要声明一个空的 ExtractToDirectory() 方法? 因为我放错了,它在我的代码中是这样的(编辑帖子)公共不可继承类ZipFile公共共享子提取目录(sourceArchiveFileName As String,destinationDirectoryName As String)End Sub End Class 默认情况下,ZipFile 中未定义 ExtractToDirectory 【参考方案1】:

根据您的代码,您继承了 ZipFile 类的 ExtractToDirectory 方法,它什么都不做。

Public NotInheritable Class ZipFile
    Public Shared Sub ExtractToDirectory(sourceArchiveFileName As String,
                                        destinationDirectoryName As String)
    End Sub
End Class

要解决此问题,只需从代码中删除此方法即可。

【讨论】:

【参考方案2】:

您自己声明了ZipFile 类,而您应该使用System.IO.Compression 命名空间中的现有类。因此,只需删除以下部分代码:

Public NotInheritable Class ZipFile
    Public Shared Sub ExtractToDirectory(
    sourceArchiveFileName As String,
    destinationDirectoryName As String
)
    End Sub
End Class

...一切都应该按预期进行。

【讨论】:

以上是关于在 Visual Basic .NET 中提取 Zip 文件的主要内容,如果未能解决你的问题,请参考以下文章

在 asp.net 中插入后获取主键(visual basic)

在 asp.net(访问数据库)中编写更新查询(visual basic)

Visual Basic .Net 中等效的公共虚拟外部字符串

在 Visual Basic VB.Net 2010 中使用 System.DateTime 类型作为可选参数

我的 ASP.NET / Visual Basic 代码有啥问题?

Visual Basic .NET 中消息框中的按钮