VB.NET 函式:輸入壓縮檔路徑、解壓目標目錄,回傳 Boolean 表示成功與否。
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
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 解壓縮的穩健選擇,功能完整且持續維護。