跳過到頁腳內容
.NET幫助

SevenZip C#(開發者的工作原理)

在檔案輸入壓縮和歸檔公用程式領域中,7-Zip 是一個多功能的開放原始碼解決方案。 7-Zip 以其高壓縮率和支援各種檔案格式而聞名,已成為追求高效檔案管理的使用者的首選。 在本文中,我們將探討什麼是 7-Zip、它如何運作、它的主要功能、獨特的 7z 格式、壓縮比率,以及有助於 建立 7z 存檔的 C# .NET SDK。 此外,我們還會介紹 IronZIP 作為 .NET 生態系統中的另一種解決方案。

什麼是 7-Zip?

7-Zip 是一款免費的開放原始碼檔案壓縮工具,可讓使用者壓縮和解壓縮檔案。 7-Zip 由 Igor Pavlov 開發,支援多種壓縮格式,是管理和組織資料的多用途工具。

Sevenzip C# (How It Works For Developers) 圖 1 - 7-Zip

主要功能

  • 高壓縮比:7-Zip 的主要功能之一是能夠達到高壓縮比,經常超越其他歸檔工具。 這可大幅節省儲存空間,並加快檔案傳輸至資料夾。
  • 廣泛的格式支援: 7-Zip 可處理各種歸檔格式,包括 7z、ZIP、TAR、GZIP 等。 這種通用性可確保與不同作業系統和軟體的相容性。
  • 加密與安全性: 7-Zip 提供強大的加密功能,允許使用者使用 AES-256 加密來保護存檔。 這可確保敏感資料受到保護。
  • 命令列支援:除了友善的圖形介面外,7-Zip 還提供命令列版本,供偏好自動化和腳本化檔案管理任務的使用者使用。

如何運作

7-Zip 利用先進的壓縮演算法來縮小檔案和資料夾的大小。 它的原生 7z 格式採用 LZMA (Lempel-Ziv-Markov chain-Algorithm) 壓縮演算法,這有助於其令人印象深刻的壓縮比率。 此公用程式也支援其他常見格式,例如 ZIP、TAR 和 GZIP。

7z格式

7z 格式是 7-Zip 用於存檔的專有格式。 它採用 LZMA 壓縮演算法,該演算法以優異的壓縮比率而聞名。 7z 格式支援固態壓縮、檔案分割和自我解壓縮歸檔等功能。

壓縮率

7-Zip 以其出色的壓縮比率而聞名,尤其是在使用 LZMA 演算法的 7z 格式時。 此效率可縮小歸檔大小,但不會影響壓縮檔案的完整性。 使用 7-Zip 建立的檔案壓縮效果比一般 ZIP 格式好 30-70%。

7-Zip LZMA SDK for C#

對於使用 C# 的開發人員,7-Zip 提供了 .NET SDK,可將 7-Zip 功能無縫整合到自訂應用程式中。 SDK 讓開發人員可以程式化的方式執行壓縮與解壓縮作業,提供在 C# 專案中管理歸檔檔案的彈性。

如果您想在 C# 應用程式中使用 7-Zip,您可以使用 7-Zip SDK 或在 C# 程式碼中使用命令列可執行檔。 以下是兩種方法的簡要概述。

1. 7-Zip SDK (7z.dll) 2.

7-Zip SDK 包含 7z.dll 函式庫,您可以在 C# 專案中使用。 此方法可讓您以程式化的方式執行壓縮與解壓縮作業。

以下是使用 7-Zip SDK 的原始碼範例:

using SevenZip;

class Program
{
    static void Main()
    {
        // Specify the path to the 7z.dll library
        SevenZipBase.SetLibraryPath("path_to_7z.dll");

        // Example: Extract files from an archive
        using (var extractor = new SevenZipExtractor("archive.7z"))
        {
            extractor.ExtractArchive("output_directory");
        }

        // Example: Compress files into an archive
        using (var compressor = new SevenZipCompressor())
        {
            // Add files to the archive
            compressor.CompressFiles("archive.7z", "file1.txt", "file2.txt");
        }
    }
}
using SevenZip;

class Program
{
    static void Main()
    {
        // Specify the path to the 7z.dll library
        SevenZipBase.SetLibraryPath("path_to_7z.dll");

        // Example: Extract files from an archive
        using (var extractor = new SevenZipExtractor("archive.7z"))
        {
            extractor.ExtractArchive("output_directory");
        }

        // Example: Compress files into an archive
        using (var compressor = new SevenZipCompressor())
        {
            // Add files to the archive
            compressor.CompressFiles("archive.7z", "file1.txt", "file2.txt");
        }
    }
}
Imports SevenZip

Friend Class Program
	Shared Sub Main()
		' Specify the path to the 7z.dll library
		SevenZipBase.SetLibraryPath("path_to_7z.dll")

		' Example: Extract files from an archive
		Using extractor = New SevenZipExtractor("archive.7z")
			extractor.ExtractArchive("output_directory")
		End Using

		' Example: Compress files into an archive
		Using compressor = New SevenZipCompressor()
			' Add files to the archive
			compressor.CompressFiles("archive.7z", "file1.txt", "file2.txt")
		End Using
	End Sub
End Class
$vbLabelText   $csharpLabel

請務必使用 7z.dll 函式庫的實際路徑取代 "path_too_7z.dll" 。 您可以在 7-Zip 安裝目錄中找到 7z.dll 檔案。

2.命令列可執行檔

另外,您也可以在 C# 原始碼中使用 7-Zip 指令行可執行檔 (7z.exe),方法是透過 System.Diagnostics.Process 類來呼叫它。

using System.Diagnostics;

class Program
{
    static void Main()
    {
        // Example: Extract files from an archive using the command-line executable
        string archivePath = "archive.7z";
        string outputPath = "output_directory";
        ProcessStartInfo processStartInfo = new ProcessStartInfo
        {
            FileName = "7z.exe",
            Arguments = $"x \"{archivePath}\" -o\"{outputPath}\"",
            RedirectStandardOutput = true,
            UseShellExecute = false,
            CreateNoWindow = true
        };
        using (Process process = new Process { StartInfo = processStartInfo })
        {
            process.Start();
            process.WaitForExit();
        }
    }
}
using System.Diagnostics;

class Program
{
    static void Main()
    {
        // Example: Extract files from an archive using the command-line executable
        string archivePath = "archive.7z";
        string outputPath = "output_directory";
        ProcessStartInfo processStartInfo = new ProcessStartInfo
        {
            FileName = "7z.exe",
            Arguments = $"x \"{archivePath}\" -o\"{outputPath}\"",
            RedirectStandardOutput = true,
            UseShellExecute = false,
            CreateNoWindow = true
        };
        using (Process process = new Process { StartInfo = processStartInfo })
        {
            process.Start();
            process.WaitForExit();
        }
    }
}
Imports System.Diagnostics

Friend Class Program
	Shared Sub Main()
		' Example: Extract files from an archive using the command-line executable
		Dim archivePath As String = "archive.7z"
		Dim outputPath As String = "output_directory"
		Dim processStartInfo As New ProcessStartInfo With {
			.FileName = "7z.exe",
			.Arguments = $"x ""{archivePath}"" -o""{outputPath}""",
			.RedirectStandardOutput = True,
			.UseShellExecute = False,
			.CreateNoWindow = True
		}
		Using process As New Process With {.StartInfo = processStartInfo}
			process.Start()
			process.WaitForExit()
		End Using
	End Sub
End Class
$vbLabelText   $csharpLabel

確保"7z.exe"在您系統的 PATH 中,或在 FileName 屬性中提供可執行檔的完整路徑。

IronZIP 簡介

雖然 7-Zip 是一個強大的解決方案,但在 .NET 生態系統中探索替代方案的開發人員可能會發現 IronZIP for .NET 是一個令人信服的選擇。IronZIP 是一個 .NET 壓縮函式庫,提供類似 7-Zip 的功能,為開發人員提供在 C# 應用程式中壓縮、解壓和處理檔案的工具。

Sevenzip C# (How It Works For Developers) 圖 2 - IronZIP

IronZIP for .NET 是一個功能強大的 C# ZIP 存檔函式庫,可簡化在 .NET 應用程式中處理 ZIP 檔案的工作。 透過其友善的 API,開發人員可以有效率地 使用 IronZIP 創建、讀取和萃取 ZIP 存檔。 以下是一個簡單的程式碼片段,展示 使用 IronZIP 創建 ZIP 存檔的簡易性:

using IronZip;

class Program
{
    static void Main()
    {
        // Specify the path for the new ZIP archive
        string zipFilePath = "output.zip";

        // Create an empty ZIP archive
        using (var archive = new IronArchive(zipFilePath))
        {
            // Add files to the ZIP
            archive.AddArchiveEntry("./assets/file1.txt");
            archive.AddArchiveEntry("./assets/file2.jpg");
            archive.AddArchiveEntry("./assets/file3.pdf");
        }

        Console.WriteLine("ZIP archive created successfully!");
    }
}
using IronZip;

class Program
{
    static void Main()
    {
        // Specify the path for the new ZIP archive
        string zipFilePath = "output.zip";

        // Create an empty ZIP archive
        using (var archive = new IronArchive(zipFilePath))
        {
            // Add files to the ZIP
            archive.AddArchiveEntry("./assets/file1.txt");
            archive.AddArchiveEntry("./assets/file2.jpg");
            archive.AddArchiveEntry("./assets/file3.pdf");
        }

        Console.WriteLine("ZIP archive created successfully!");
    }
}
Imports IronZip

Friend Class Program
	Shared Sub Main()
		' Specify the path for the new ZIP archive
		Dim zipFilePath As String = "output.zip"

		' Create an empty ZIP archive
		Using archive = New IronArchive(zipFilePath)
			' Add files to the ZIP
			archive.AddArchiveEntry("./assets/file1.txt")
			archive.AddArchiveEntry("./assets/file2.jpg")
			archive.AddArchiveEntry("./assets/file3.pdf")
		End Using

		Console.WriteLine("ZIP archive created successfully!")
	End Sub
End Class
$vbLabelText   $csharpLabel

如需 IronZIP 及其功能或程式碼範例的詳細資訊,請造訪 IronZIP 文件頁面。

結論

7-Zip 一直是檔案壓縮領域的主導者,為使用者提供開放原始碼、功能豐富且壓縮率超高的解決方案。 其支援各種存檔格式和強大的加密功能,讓它成為休閒使用者和開發人員的多用途選擇。.NET SDK 進一步將其實用性擴展至 C# 開發人員,促進與自訂應用程式的無縫整合。 對於那些在 .NET 領域尋找替代方案的人來說,IronZIP 是一個值得注意的競爭者,它針對 C# 開發人員的特殊需求提供了類似功能。

IronZIP 提供 免費試用 IronZIP。 從 IronZIP 下載頁面下載並試用 IronZIP for .NET Core 和 Framework 函式庫。

常見問題解答

什麼是 7-Zip?為什麼它很受歡迎?

7-Zip 是一款開放原始碼的檔案壓縮工具,以高壓縮比率和支援 7z、ZIP、TAR 和 GZIP 等多種壓縮格式而聞名。由於它在資料管理上的效率以及強大的 AES-256 加密安全性,因此廣受歡迎。

7z 格式與其他格式有何不同?

7z 格式採用 LZMA 壓縮演算法,提供優異的壓縮效率,壓縮效果通常比標準 ZIP 格式高出 30-70%。這使其成為優先縮小檔案大小的使用者的理想選擇。

開發人員如何在 C# 專案中使用 7-Zip?

開發人員可利用包含 7z.dll 函式庫的 7-Zip .NET SDK,以程式化的方式將壓縮與解壓縮功能整合至 C# 應用程式中。另外,也可使用 7z.exe 指令列工具來管理檔案。

IronZIP 為 .NET 應用程式提供哪些優勢?

IronZIP 為 .NET 應用程式提供使用者友善的 API,簡化 ZIP 檔案的建立、讀取與萃取。對於在 C# 專案中尋求易用性和強大 ZIP 檔案管理功能的開發人員而言,這是一個可行的替代方案。

我可以使用 7-Zip 來加密檔案嗎?

是的,7-Zip 使用 AES-256 提供強大的加密功能,允許使用者在壓縮期間安全地加密檔案和保護敏感資料。

IronZIP 是否有試用版?

是的,IronZIP 提供免費試用版,可從其網站下載。此試用版可讓開發人員探索其功能,並在 .NET 應用程式中整合 ZIP 檔案管理。

7-Zip 的主要功能是什麼?

7-Zip 的特色包括高壓縮率、支援多種格式、強大的 AES-256 加密功能,以及友善的使用者介面和命令列支援,可滿足不同使用者的需求。

如何在 C# 應用程式中使用檔案歸檔?

您可以在 C# 應用程式中使用檔案歸檔,方法是使用 7-Zip SDK 的 7z.dll 或 IronZIP 等函式庫,兩者都提供處理檔案壓縮與萃取的全面工具。

Jacob Mellor, Team Iron 首席技术官
首席技术官

Jacob Mellor 是 Iron Software 的首席技術官,作為 C# PDF 技術的先鋒工程師。作為 Iron Software 核心代碼的原作者,他自開始以來塑造了公司產品架構,與 CEO Cameron Rimington 一起將其轉變為一家擁有超過 50 名員工的公司,為 NASA、特斯拉 和 全世界政府機構服務。

Jacob 持有曼徹斯特大學土木工程一級榮譽学士工程學位(BEng) (1998-2001)。他於 1999 年在倫敦開設了他的第一家軟件公司,並於 2005 年製作了他的首個 .NET 組件,專注於解決 Microsoft 生態系統內的複雜問題。

他的旗艦產品 IronPDF & Iron Suite .NET 庫在全球 NuGet 被安裝超過 3000 萬次,其基礎代碼繼續為世界各地的開發工具提供動力。擁有 25 年的商業經驗和 41 年的編碼專業知識,Jacob 仍專注於推動企業級 C#、Java 及 Python PDF 技術的創新,同時指導新一代技術領袖。