.NET 幫助

SevenZip C#(開發者如何使用)

發佈 2023年12月24日
分享:

介紹

在文件進入壓縮和存檔工具領域中,7-Zip 以其多用途的開源解決方案而脫穎而出。SevenZip 以其高壓縮率和對各種壓縮格式的支持而聞名,已成為尋求高效文件管理用戶的流行選擇。在本文中,我們將探討什麼是 7-Zip、它如何運作、其主要特點、獨特的 7z 格式、壓縮率以及其用於 C# 創建 7z 壓縮檔的 .NET SDK。此外,我們將介紹 IronZIP 作為 .NET 生態系統中的另一個替代解決方案。

什麼是SevenZip?

SevenZip 或 7-Zip 是一款免費和開源的文件打包工具,允許用戶壓縮和解壓縮文件。由 Igor Pavlov 開發,7-Zip 支援多種壓縮格式,使其成為管理和組織數據的多功能工具。

Sevenzip C#(開發人員工作原理)圖 1 - 7-Zip

主要功能

  • 高壓縮率: 7-Zip 的主要特點之一是其能達到高壓縮率,往往超過其他壓縮工具。這可以在儲存空間上節省大量資源,並且更快速地將檔案傳輸到資料夾。
  • 廣泛支援格式: 7-Zip 可以處理多種壓縮格式,包括 7z、ZIP、TAR、GZIP 等。這種多功能性確保了與不同作業系統和軟體的相容性。
  • 加密與安全: 7-Zip 提供強大的加密功能,允許使用者使用 AES-256 加密來保護壓縮檔案。這確保了敏感資料的安全性。
  • 命令行支援: 除了其用户友好的圖形界面外,7-Zip 還提供命令行版本,適合偏好自動化和腳本處理檔案管理任務的用户。

運作方式

7-Zip 利用先進的壓縮算法來減小文件和資料夾的大小。它採用了LZMA演算法 (Lempel-Ziv-Markov鏈演算法) 其原生7z格式的壓縮演算法,這有助於其令人印象深刻的壓縮率。該工具還支持其他常見的格式,如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)

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");
        // Create a SevenZipExtractor or SevenZipCompressor instance
        // Perform compression or decompression operations as needed
        // 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 File entry in 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");
        // Create a SevenZipExtractor or SevenZipCompressor instance
        // Perform compression or decompression operations as needed
        // 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 File entry in 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")
		' Create a SevenZipExtractor or SevenZipCompressor instance
		' Perform compression or decompression operations as needed
		' 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 File entry in archive
			compressor.CompressFiles("archive.7z", "file1.txt", "file2.txt")
		End Using
	End Sub
End Class
VB   C#

請確保將 "path_to_7z.dll" 替換成 7z.dll 庫的實際路徑。您可以在 7-Zip 安裝目錄中找到 7z.dll 文件。

2. 指令列可執行檔

此外,您也可以使用 7-Zip 指令列可執行檔 (7z.exe) 在您的C#源碼中,通過調用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
VB   C#

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

介紹 IronZIP

雖然 7-Zip 是一個強大的解決方案,但在 .NET 生態系統中尋找替代方案的開發人員可能會發現 IronZIP 是一個有吸引力的選擇。 IronZIP 是一個 .NET 壓縮庫,提供類似 7-Zip 的功能,讓開發人員能在 C# 應用程式中壓縮、解壓縮和操作檔案壓縮包。

Sevenzip C#(開發者運作方式)圖 2 - IronZIP

IronZIP 是一個功能強大的 C# ZIP 檔案庫,能夠簡化 .NET 應用程式中 ZIP 檔案的處理。憑藉其用戶友好的 API,開發者可以高效地 建立、讀取和提取 ZIP 壓縮檔。以下是一段簡易的程式碼範例展示其方便性 創建 ZIP 存檔 使用IronZIP:

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

如需有關 IronZIP 功能或範例程式碼的更多資訊,請訪問 文檔 頁面。

結論

7-Zip 依舊是檔案壓縮領域中的主導力量,為用戶提供了開源、功能豐富且具有卓越壓縮比的解決方案。其對各種壓縮格式的支持和強大的加密能力,使其成為普通用戶和開發人員都能使用的多功能選擇。 .NET SDK 進一步延展了其對 C# 開發人員的實用性,便於平滑整合到自訂應用程式中。對於那些尋找 .NET 領域替代方案的人來說,IronZIP 脫穎而出,提供了類似的功能,專為 C# 開發人員的特定需求量身打造。

IronZIP 提供了 免費試用 頁面。從網站下載並嘗試 IronZIP .NET Core 和 Framework 庫 這裡.

< 上一頁
Mailkit C#(適用於開發人員的工作原理)
下一個 >
ByteSize C#(對開發人員的運作方式)

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

免費 NuGet 下載 總下載次數: 10,993,239 查看許可證 >