首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

VB.NET 解壓縮檔案完整實作 (SharpZipLib)

     編輯:程式設計綜合問答

需求

VB.NET 函式:輸入壓縮檔路徑、解壓目標目錄,回傳 Boolean 表示成功與否。

推薦庫:SharpZipLib (ICSharpCode.SharpZipLib)

  • 開源、成熟、支援 ZIP/GZIP/TAR/BZIP2。
  • NuGet 安裝:Install-Package SharpZipLib。

完整解壓縮函式

Imports ICSharpCode.SharpZipLib.Zip
Imports System.IO

Public Function UnzipFile(zipPath As String, extractDir As String) As Boolean
    Try
        If Not File.Exists(zipPath) Then Return False
        If Not Directory.Exists(extractDir) Then Directory.CreateDirectory(extractDir)

        Using zipStream As FileStream = File.OpenRead(zipPath)
            Using zipFile As New ZipFile(zipStream)
                For Each entry As ZipEntry In zipFile
                    If entry.IsFile Then
                        Dim filePath As String = Path.Combine(extractDir, entry.Name)
                        Dim dirPath As String = Path.GetDirectoryName(filePath)
                        If Not Directory.Exists(dirPath) Then Directory.CreateDirectory(dirPath)

                        Using outStream As FileStream = File.Create(filePath)
                            Dim buffer(4096) As Byte
                            zipFile.GetInputStream(entry).CopyTo(outStream)
                        End Using
                    End If
                Next
            End Using
        End Using
        Return True
    Catch ex As Exception
        ' 記錄錯誤: ex.Message, ex.StackTrace
        Return False
    End Try
End Function

呼叫範例

Dim success As Boolean = UnzipFile("C:\Data\archive.zip", "C:\Data\Extracted")
If success Then
    MessageBox.Show("解壓縮成功")
Else
    MessageBox.Show("解壓縮失敗,請檢查路徑與權限")
End If

進階補充

  • 密碼保護 ZIP:zipFile.Password = "yourpass" 在迴圈前設定。
  • 覆寫既有檔案:File.Create 預設覆寫,若需跳過可先 File.Exists 判斷。
  • 進度回報:在 CopyTo 替換為手動讀寫迴圈,依 entry.Size 計算進度。
  • 大檔案/記憶體:使用 CopyTo 串流複製,避免一次載入完整檔案到記憶體。

替代方案

  • System.IO.Compression.ZipFile (.NET Framework 4.5+ / .NET Core):**零第三方依賴**,但功能較簡單 (不支援密碼、註解、多卷等)。
  • DotNetZip (Ionic.Zip):功能豐富但專案已停止維護。

SharpZipLib 是 VB.NET 解壓縮的穩健選擇,功能完整且持續維護。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved