在 上一篇文章 中,我討論了使用 C# 創建 ZIP 存檔的不同方法。本文還介紹瞭如何創建加密和密碼保護的 ZIP 存檔。除了 ZIP 格式,還有一些其他常用的壓縮格式,如 7z、tar、RAR 等。其中,7z 壓縮格式基於開源架構它用於壓縮具有高壓縮率的文件和文件夾。它還支持 256 位 AES 加密並允許加密文件名。在本文中,我將演示如何使用 C# 以編程方式創建 7z (7-Zip) 存檔。
本文分為以下幾個部分:
本文中的所有步驟和代碼示例均基於 Aspose.ZIP for .NET。因此,請確保您已使用以下任一方法安裝 API:
- 使用 NuGet 包管理器 安裝。
- 下載 DLL and add its reference to the project.
使用 C# 創建 7z (7-Zip) 存檔
將文件壓縮到 7z 存檔中可能有兩種情況。您要么只有一個文件,要么可能有一堆文件要壓縮。您可以明確地處理這兩種情況。
使用單個條目創建 7z 存檔
以下是使用單個條目創建 7z 存檔的步驟。
- 打開一個新的 FileStream 來創建一個 7z 文件。
- 創建 SevenZipArchive 類的實例。
- 使用 SevenZipArchive.CreateEntry(String, String, Boolean, SevenZipEntrySettings) 方法將文件添加到存檔中。
- 使用 SevenZipArchive.Save(Stream) 方法創建並保存存檔。
以下代碼示例展示瞭如何使用 C# 創建 7z (7-Zip) 存檔。
using (FileStream sevenZipFile = File.Open("archive.7z", FileMode.Create))
{
using (var archive = new SevenZipArchive())
{
archive.CreateEntry("data.bin", "file.dat");
archive.Save(sevenZipFile);
}
}
創建具有多個條目的 7z 存檔
在這種情況下,您可以將文件放在一個文件夾中,並將文件夾的路徑傳遞給 SevenZipArchive.CreateEntries() 方法。以下是將多個文件條目添加到 7z 存檔的步驟。
- 創建 SevenZipArchive 類的實例。
- 將文件夾的路徑傳遞給 SevenZipArchive.CreateEntries(String, Boolean) 方法。
- 調用 SevenZipArchive.Save(String) 方法。
以下代碼示例顯示瞭如何使用 C# 創建具有多個條目的 7z 存檔。
using (SevenZipArchive archive = new SevenZipArchive())
{
archive.CreateEntries(dataDir);
archive.Save("SevenZip.7z");
}
使用 C# 創建 AES 加密的 7z 存檔
7z 格式支持 AES 加密以保護文件。為了加密 7z 文件,使用了 SevenZipAESEncryptionSettings 類。以下代碼示例展示瞭如何使用 C# 創建 AES 加密的 7z 存檔。
using (var archive = new SevenZipArchive(new SevenZipEntrySettings(null, new SevenZipAESEncryptionSettings("p@s$"))))
{
archive.CreateEntry("data.bin", new MemoryStream(new byte[] { 0x00, 0xFF }));
archive.Save("archive.7z");
}
使用 C# 為 7z 條目設置不同的密碼
7z 格式還允許您為每個文件條目指定不同的密碼。例如,如果您要壓縮 7z 存檔中的兩個文件,您可以為每個文件指定不同的密碼。以下是為 7z 條目設置不同密碼的步驟。
- 為 7z 存檔文件創建一個新的 FileStream。
- 使用 FileInfo 類訪問每個文件條目。
- 創建 SevenZipArchive 類的實例。
- 使用 SevenZipArchive.CreateEntry(String, FileInfo, Boolean, SevenZipEntrySettings) 創建 7z 存檔條目
- 使用 SevenZipArchive.Save(Stream) 方法保存存檔。
以下代碼示例顯示瞭如何為 7z 存檔中的每個條目設置密碼。
using (FileStream sevenZipFile = File.Open("archive.7z", FileMode.Create))
{
FileInfo fi1 = new FileInfo("data1.bin");
FileInfo fi2 = new FileInfo("data2.bin");
FileInfo fi3 = new FileInfo("data3.bin");
using (var archive = new SevenZipArchive())
{
archive.CreateEntry("entry1.bin", fi1, false, new SevenZipEntrySettings(new SevenZipStoreCompressionSettings(), new SevenZipAESEncryptionSettings("test1")));
archive.CreateEntry("entry2.bin", fi2, false, new SevenZipEntrySettings(new SevenZipStoreCompressionSettings(), new SevenZipAESEncryptionSettings("test2")));
archive.CreateEntry("entry3.bin", fi3, false, new SevenZipEntrySettings(new SevenZipStoreCompressionSettings(), new SevenZipAESEncryptionSettings("test3")));
archive.Save(sevenZipFile);
}
}
結論
在本文中,我們學習瞭如何使用 C# 以編程方式創建 7z 存檔。此外,我們還了解瞭如何創建 AES 加密的 7z 文件並為每個文件條目設置密碼。您可以從 此處 了解有關文件壓縮/解壓縮的更多信息。