使用 IRONZIP

如何在 C# 中打開 Zip 文件

發佈 2024年1月4日
分享:

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

在本博客中,我們將探索一種現代、簡便且高效的方法來打開ZIP壓縮檔案或提取文件,使用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 版本。

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

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 表示較高。 可以使用最大壓縮率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)
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輕鬆建立新檔案並處理壓縮/解壓縮任務。 隨著越來越多的應用程式現代化並移至雲端,擁有一個可靠的ZIP庫如IronZIP為 C# 開發者提供滿足現代應用程式開發需求的必要工具。 因此,擁抱...的力量IronZIP並為您的 C# 應用程式解鎖處理 ZIP 文件的新可能性。

IronZIP為開發人員提供廣泛的支援。 了解更多關於如何IronZIP前往此處查看適用於 C# 的作品。 IronZIP提供免費試用許可證,這是瞭解的好機會IronZIP及其功能。

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

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

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

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