使用 IRONZIP

如何在 C# 中打開 Zip 文件

發佈 2024年1月4日
分享:

ZIP 是一種支持無損數據壓縮的存檔條目文件系統格式。ZIP 文件可能包含一個或多個已壓縮的文件或目錄。ZIP 文件格式允許多種壓縮算法,雖然 DEFLATE 是最常見的。ZIP 格式隨後迅速獲得了許多軟體實用程式的支持。主要的操作系統提供商早已包含 ZIP 存檔支持。微軟從 Windows 98 開始包括 ZIP 文件支持,其他公司隨之效仿。

在這篇博客中,我們將探索一種現代、簡單且高效的方式來打開 ZIP 存檔文件或提取文件,使用 IronZIP。 IronZIP我們將學習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
VB   C#

要建立新的 ZIP 檔案並提取所有的 ZIP 壓縮檔,我們可以使用預設庫中的 System.IO.Compression。在上述代碼中 ZipFile.OpenReadZipFile.Open 靜態方法可以用來打開 ZIP 檔案或解壓 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
VB   C#

在上面的代碼中,我們有一個名為 myFile.zip 的 ZIP 文件,並且我們使用 system 命名空間。OpenRead 方法用於以指定模式打開 ZIP 文件。這也可以用來創建新的 ZIP 壓縮文件。 一旦打開,我們可以使用 AddEntry 方法來添加新的壓縮項,然後 ExtractToDirectory 將 ZIP 壓縮文件或選定文件解壓縮到指定目錄。目錄會被檢查是否存在,如果不存在,則使用 Directory.CreateDirectory 創建目錄。dirToExtract 是解壓縮 ZIP 壓縮文件的目錄路徑。代碼中的最後一行是 ZipFile.ExtractToDirectory(壓縮檔, 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 專案中。

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

建立一個 ZIP 壓縮檔並使用 IronZIP 添加檔案

IronZIP 具有 IronArchive 類別,可以用來建立 ZIP 檔案並解壓 ZIP 檔案,同時也支援使用單一庫建立 TAR、GZIP 和 BZIP2 壓縮檔案。以下是建立 ZIP 檔案的程式碼。IronArchive 類別用來建立/開啟 ZIP 檔案,然後使用 archive.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
VB   C#

初始源代碼具有設定指定 ZIP 壓縮檔名稱及檢查指定目錄是否存在的必要設置。然後我們使用 Add 方法將文件打包以創建 ZIP 文件。壓縮參數中的第二個參數為 1 表示較低, 9 表示較高。 txt 文件可以在 9 的情況下無損壓縮至最大,而圖像文件則可以使用較低的壓縮以避免數據丟失。

使用 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)
VB   C#

上述代碼將 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"
VB   C#

開發人員在註冊後可以獲得試用授權 這裡 是的,試用許可證不需要信用卡。只需提供電子郵件地址並註冊即可獲得免費試用。

添加文件到现有的ZIP檔案

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

//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
VB   C#

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

更新

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

結論

總而言之,ZIP 文件程式設計是現代應用程式開發中一項至關重要的技能,特別是在雲端主機供應商按儲存和數據傳輸成本收費的情況下。掌握這項技能可以幫助程式設計師降低應用程式的成本並提高其性能。

通過遵循安裝步驟和探索提供的代碼示例,開發人員可以快速利用 IronZIP 的強大功能。 IronZIP 創建新文件並輕鬆處理壓縮/解壓任務。隨著越來越多的應用程序現代化並遷移到雲端,擁有像 IronZIP 這樣可靠的 ZIP 庫至關重要。 IronZIP 為C#開發者提供了滿足現代應用開發需求的工具。因此,擁抱 IronZIP 在您的C#應用程式中解鎖與ZIP檔案工作的新可能性。

IronZIP 為開發人員提供廣泛的支援。要了解更多有關如何 IronZIP 對於 C# 作品,請訪問這裡。 IronZIP 提供免費試用許可證,這是瞭解的好機會 IronZIP 和其功能。

Iron Software 擁有各種其他的庫,探索它們以獲取更多知識並提升技能來編程/開發現代應用程序。

< 上一頁
如何在 .NET Core 中解壓縮文件
下一個 >
如何在 C# .NET Core 中創建 Zip 檔案

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

免費 NuGet 下載 總下載次數: 4,343 查看許可證 >