使用 IRONZIP

如何在 C# 中打開 Zip 文件

查克尼思·賓
查克尼思·賓
2024年1月4日
分享:

ZIP 是一種支持無損數據壓縮的存檔條目文件系統格式。 ZIP 檔案可能包含一個或多個已壓縮的文件或目錄。 ZIP 檔案格式允許多種壓縮算法,儘管 DEFLATE 是最常見的。 隨後,許多軟件工具迅速支持 ZIP 格式。 主流作業系統提供商早已包含 ZIP 壓縮檔支援。微軟自 Windows 98 就開始支援 ZIP 檔,其他廠商也隨之跟進。

在這篇博客中,我們將探索一種使用IronZIP打開 ZIP 壓縮檔案或提取檔案的現代、簡單且高效的方法。 我們將學習有關 ZIP 檔案的一般資訊及其優點。 然後我們將看到系統名稱空間中可用於處理 ZIP 文件格式的選項。 接下來我們將探討打開ZIP檔、提取ZIP檔到臨時資料夾、創建新的ZIP檔並將文件添加到現有ZIP檔的逐步說明。

在軟體應用程式中使用ZIP文件的優勢

  1. 壓縮:此技術使用各種壓縮算法,例如 Implode、Deflate、Deflate64、bzip2、LZMA、WavPack、PPMd 等,減小歸檔文件/資料夾的大小。

  2. 縮短傳輸時間:較小的文件大小意味著更快的傳輸時間,特別是在透過互聯網傳送文件時。 這對於電子郵件附件以及從網站上傳或下載文件特別有利。

  3. 文件整合:ZIP 檔案使您能夠將多個文件整合成一個檔案,減少需要管理的文件數量。 這對於組織專案或分發由多個檔案組成的軟體非常有用。

  4. 密碼 保護:許多 ZIP 工具提供密碼保護壓縮檔的選項,為您的文件添加一層安全保障。 這在您想要限制對 ZIP 檔案內容的存取時很有用。

使用 IronZIP 創建 ZIP 壓縮檔案並提取 ZIP 文件

IronZIP 程式庫和文件的介紹可以在這裡找到。 在 C# 應用程式中,ZIP 檔案可以透過多種方式創建和解壓縮。 IronZIP NuGet 套件具有所有功能,可將檔案存檔為不同格式,包括 ZIP、TAR、GZIP 和 BZIP2。以下是如何在現代應用程序編程中使用 IronZIP 建構下一代應用程序的範例步驟,以開啟 ZIP 檔案、提取 ZIP 檔案、創建新的 ZIP 檔案等。

第 1 步。建立 .NET Core 控制台應用程式

創建項目

可以使用 Visual Studio 創建 .NET 控制台應用程式。 打開 Visual Studio 並選擇創建專案。 在這裡,您可以看到用於創建專案的各種模板。 最簡單的展示或測試代碼的方法是創建一個控制台應用程式。 我們將選擇「控制台應用程式」專案模板。

如何在 C# 中打開 Zip 文件:圖 1 - 新專案

輸入專案名稱

在以下窗口中,您可以輸入專案名稱、專案在文件系統中的儲存位置,最後一項是解決方案資料夾的路徑。 您可以將解決方案與專案文件夾保存在同一個文件夾中,或放在不同的文件夾中。

如何在 C# 中打開 Zip 文件:圖 2 - 配置項目

選擇 .NET Framework 版本

下一步是為專案選擇 .NET Framework 版本。 如果您想在特定版本中開發,請指定您喜歡的版本,否則請始終選擇最新的穩定版本來創建專案。 最新版本可以從微軟網站下載。然後點擊建立以生成控制台應用程式。

如何在 C# 中打開 Zip 文件:圖 3 - 目標框架

這將從模板創建預設專案,並將專案和解決方案檔案存儲在指定的目錄中。 建立專案後,它將看起來類似如下。 有時候,在最新版本中,該類別不會在 program.cs 中使用。

using System;
// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!");
namespace MyApp // Note: actual namespace depends on the project name.
{
    internal class Program
    {
        static void Main(string [] args)
        {
            Console.WriteLine("Hello World!");
        }
    }
}
using System;
// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!");
namespace MyApp // Note: actual namespace depends on the project name.
{
    internal class Program
    {
        static void Main(string [] args)
        {
            Console.WriteLine("Hello World!");
        }
    }
}
Imports System
' See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!")
Dim MyApp As namespace ' Note: actual namespace depends on the project name.
If True Then
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
'	internal class Program
'	{
'		static void Main(string [] args)
'		{
'			Console.WriteLine("Hello World!");
'		}
'	}
End If
$vbLabelText   $csharpLabel

要創建新的 ZIP 文件並提取所有 ZIP 壓縮存檔文件,我們可以使用預設庫中的 System.IO.Compression。 在上述代碼中,ZipFile.OpenReadZipFile.Open 靜態方法可用於開啟或解壓 ZIP 文件。

using System.IO.Compression;  
Console.WriteLine("-----------Zip - Unzip-----------");
static void AddEntry(string filePath, 
System.IO.Compression.ZipArchive zipArchive)
{
    var file = Path.GetFileName(filePath); // get file name in var file
    zipArchive.CreateEntryFromFile(filePath, file);
}
var zip = "myFile.zip";
using (System.IO.Compression.ZipArchive archive = ZipFile.OpenRead(zip,     ZipArchiveMode.Create))
{
    AddEntry(file1, archive);
    AddEntry(file2, archive);
}
var dirToExtract = "extract";
if (Directory.Exists(dirToExtract) == false)
{
    Directory.CreateDirectory(dirToExtract);
}
ZipFile.ExtractToDirectory(zip, dirToExtract); //extracted file
using System.IO.Compression;  
Console.WriteLine("-----------Zip - Unzip-----------");
static void AddEntry(string filePath, 
System.IO.Compression.ZipArchive zipArchive)
{
    var file = Path.GetFileName(filePath); // get file name in var file
    zipArchive.CreateEntryFromFile(filePath, file);
}
var zip = "myFile.zip";
using (System.IO.Compression.ZipArchive archive = ZipFile.OpenRead(zip,     ZipArchiveMode.Create))
{
    AddEntry(file1, archive);
    AddEntry(file2, archive);
}
var dirToExtract = "extract";
if (Directory.Exists(dirToExtract) == false)
{
    Directory.CreateDirectory(dirToExtract);
}
ZipFile.ExtractToDirectory(zip, dirToExtract); //extracted file
Imports System.IO.Compression
Console.WriteLine("-----------Zip - Unzip-----------")
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
'static void AddEntry(string filePath, System.IO.Compression.ZipArchive zipArchive)
'{
'	var file = Path.GetFileName(filePath); ' get file name in var file
'	zipArchive.CreateEntryFromFile(filePath, file);
'}
Dim zip = "myFile.zip"
Using archive As System.IO.Compression.ZipArchive = ZipFile.OpenRead(zip, ZipArchiveMode.Create)
	AddEntry(file1, archive)
	AddEntry(file2, archive)
End Using
Dim dirToExtract = "extract"
If Directory.Exists(dirToExtract) = False Then
	Directory.CreateDirectory(dirToExtract)
End If
ZipFile.ExtractToDirectory(zip, dirToExtract) 'extracted file
$vbLabelText   $csharpLabel

在上面的代碼中,我們有一個名為 myFile.zip 的 ZIP 文件,並且我們使用 system 命名空間。 OpenRead 方法用於以指定模式打開 ZIP 文件。 這也可以用來創建新的 ZIP 壓縮檔案。 一旦打開,我們可以使用方法AddEntry新增一個存檔條目,然後使用ExtractToDirectory將ZIP存檔文件或選定文件提取到指定的目錄。 檢查目錄是否存在。 如果不存在,則使用Directory.CreateDirectory創建目錄。 dirToExtract 是解壓縮 ZIP 壓縮檔案的目錄路徑。 程式碼中的最後一行ZipFile.ExtractToDirectory(zip, dirToExtract)用來解壓 ZIP 文件。所有檔案將保存在目錄路徑中。

步驟 2:使用 NuGet 套件管理器安裝 IronZIP

從 Visual Studio 開啟專案管理員並搜尋 IronZIP 套件。 然後選擇最新版本並點擊安裝。 您可以從下拉選單中更改要安裝的版本。 然後點擊安裝。

如何在 C# 中打開 Zip 文件:圖 4 - NuGet 程式包管理器

使用 IronZIP 建立 ZIP 壓縮檔案並新增檔案

如何在 C# 中開啟 Zip 檔案:圖 5 - IronZIP

IronZIP 是由 Iron Software 開發的檔案壓縮和解壓縮庫。 除了廣泛使用的ZIP格式外,它還可以處理TAR、GZIP和BZIP2。

IronZIP 是一個 C# ZIP 壓縮歸檔庫,強調準確性、易用性和速度。 使用者友好的 API 使開發人員能夠在幾分鐘內輕鬆將歸檔功能添加到現代 .NET 項目中。

IronZIP 相較於 System.Io.Compression 庫具有許多優勢。 在壓縮過程中,您可以指定所需的壓縮比,並使用不同的壓縮算法,例如 ZIP、TAR、GZIP、BZIP2。它還支援移動、網頁和桌面平台以及各種 .NET 版本。

使用IronZIP創建ZIP壓縮檔並添加文件。

IronZIP 擁有類別 IronArchive,可以用來建立 ZIP 文件,提取 ZIP 文件,並且透過單一函式庫支援 TAR、GZIP 和 BZIP2 壓縮檔的建立。 以下是建立 ZIP 檔案的程式碼。IronArchive 類別用來建立/開啟 ZIP 檔案,然後進行封存。Add 方法用於像下面這樣將檔案條目新增到封存中。

// setup
var archivePath= "ironZip.zip";
if (File.Exists(archivePath))
{
    File.Delete(archivePath);
}
// zip file
using (var archive = new IronZipArchive(9))
{
    // Add files to the zip 
    archive.Add(file1);
    archive.Add(file2);
    archive.SaveAs(archivePath);
}
// setup
var archivePath= "ironZip.zip";
if (File.Exists(archivePath))
{
    File.Delete(archivePath);
}
// zip file
using (var archive = new IronZipArchive(9))
{
    // Add files to the zip 
    archive.Add(file1);
    archive.Add(file2);
    archive.SaveAs(archivePath);
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

初始源代碼包含指定 ZIP 壓縮檔案名稱的設置,並檢查指定的目錄是否存在。 然後我們使用Add方法將文件歸檔以創建一個ZIP文件。 壓縮參數的第二個參數中,1 表示較低,9 表示較高。 可以使用最大壓縮率9對txt文件進行無損壓縮,而圖像文件可以使用較低的壓縮率以避免數據丟失。

使用 IronZIP 打開 ZIP 壓縮檔案

IronArchive 類別還可以用來從 ZIP 壓縮檔案中提取文件。所有文件都使用 IronArchive.ExtractArchiveToDirectory 提取,這有助於將所有文件提取到如下所示的特定目錄中。

var extractionPath = "IronZipFiles";
// extract files from zip
if (Directory.Exists(extractionPath) == false)
{
    Directory.CreateDirectory(extractionPath);
}
IronArchive.ExtractArchiveToDirectory(archivePath, extractionPath);
var extractionPath = "IronZipFiles";
// extract files from zip
if (Directory.Exists(extractionPath) == false)
{
    Directory.CreateDirectory(extractionPath);
}
IronArchive.ExtractArchiveToDirectory(archivePath, extractionPath);
Dim extractionPath = "IronZipFiles"
' extract files from zip
If Directory.Exists(extractionPath) = False Then
	Directory.CreateDirectory(extractionPath)
End If
IronArchive.ExtractArchiveToDirectory(archivePath, extractionPath)
$vbLabelText   $csharpLabel

上面的程式碼將 ZIP 檔案提取到目錄中。 程式碼檢查目錄是否存在,然後將 ZIP 壓縮檔案解壓縮到指定的目錄。

授權(免費試用可用)

要使上述程式碼運作,需要授權密鑰。 此金鑰需要放置在 appsettings.json 中。

"IronZip.LicenseKey": "your lincese key"
"IronZip.LicenseKey": "your lincese key"
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'"IronZip.LicenseKey": "your lincese key"
$vbLabelText   $csharpLabel

開發人員可在這裡註冊以獲得試用許可證,並且不需要信用卡。 您可以提供電子郵件地址並註冊免費試用。

將檔案添加到現有的ZIP壓縮檔案中

使用靜態方法FromFileIronZIP開啟現有的壓縮檔案。此方法還需要指定將作為輸出的新壓縮檔案的檔名。

//add to existing archive
const string file3 = ".\\image3.png";
var archivePlusPath = "ironZipPlus.zip";
using (var file = IronArchive.FromFile(archivePath, archivePlusPath))
{
    // Add files
    file.Add(file3);
}
//add to existing archive
const string file3 = ".\\image3.png";
var archivePlusPath = "ironZipPlus.zip";
using (var file = IronArchive.FromFile(archivePath, archivePlusPath))
{
    // Add files
    file.Add(file3);
}
'add to existing archive
Const file3 As String = ".\image3.png"
Dim archivePlusPath = "ironZipPlus.zip"
Using file = IronArchive.FromFile(archivePath, archivePlusPath)
	' Add files
	file.Add(file3)
End Using
$vbLabelText   $csharpLabel

該代碼使用IronArchive.FromFile靜態方法來打開現有的ZIP文件,然後將新文件添加為存檔條目。 一旦文件被處理掉,文件就成功保存。

更新

IronZIP 庫根據客戶/用戶的反饋不斷更新,所有更新都可以在這裡找到。

結論

總結來說,ZIP 文件編程是在現代應用程式開發中必須培養的一項重要技能,因為雲端主機提供商會對存儲和數據傳輸成本收費。 了解這項技能可以幫助程式設計師降低應用程式的成本並提高應用程式的性能。

透過遵循安裝步驟並探索提供的程式碼範例,開發人員可以快速利用IronZIP的強大功能,輕鬆創建新檔案並處理壓縮/解壓縮任務。 隨著越來越多的應用程式現代化並移動到雲端,擁有像 IronZIP 這樣可靠的 ZIP 函式庫,使 C# 開發人員能夠滿足現代應用程式開發的需求。 因此,擁抱IronZIP的力量,為在 C# 應用程式中處理 ZIP 文件開啟新的可能性。

IronZIP為其開發者提供了廣泛的支持。 如需了解更多關於 IronZIP for C# 的運作方式,請訪問此處。 IronZIP 提供免費試用許可證,這是一個瞭解 IronZIP 及其功能的絕佳機會。

Iron Software 擁有各種其他庫,探索它們以獲取更多知識,並更新您的技能,以程式設計/開發現代應用程式。

查克尼思·賓
軟體工程師
Chaknith 致力於 IronXL 和 IronBarcode。他在 C# 和 .NET 方面擁有豐富的專業知識,協助改進軟體並支持客戶。他從用戶互動中獲得的洞察力有助於提高產品、文檔和整體體驗。
< 上一頁
如何在 .NET Core 中解壓縮文件
下一個 >
如何在 C# .NET Core 中創建 Zip 檔案

準備開始了嗎? 版本: 2025.4 剛剛發布

查看許可證 >