在 C# 中創建 7Zip 存檔

上一篇文章 中,我討論了使用 C# 創建 ZIP 存檔的不同方法。本文還介紹瞭如何創建加密和密碼保護的 ZIP 存檔。除了 ZIP 格式,還有一些其他常用的壓縮格式,如 7ztarRAR 等。其中,7z 壓縮格式基於開源架構它用於壓縮具有高壓縮率的文件和文件夾。它還支持 256 位 AES 加密並允許加密文件名。在本文中,我將演示如何使用 C# 以編程方式創建 7z (7-Zip) 存檔。

本文分為以下幾個部分:

本文中的所有步驟和代碼示例均基於 Aspose.ZIP for .NET。因此,請確保您已使用以下任一方法安裝 API:

使用 C# 創建 7z (7-Zip) 存檔

將文件壓縮到 7z 存檔中可能有兩種情況。您要么只有一個文件,要么可能有一堆文件要壓縮。您可以明確地處理這兩種情況。

使用單個條目創建 7z 存檔

以下是使用單個條目創建 7z 存檔的步驟。

以下代碼示例展示瞭如何使用 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 存檔的步驟。

以下代碼示例顯示瞭如何使用 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 存檔中的每個條目設置密碼。

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 文件並為每個文件條目設置密碼。您可以從 此處 了解有關文件壓縮/解壓縮的更多信息。

相關文章