Vytvořte archiv 7Zip v C#

V předchozím příspěvku jsem diskutoval o různých způsobech vytváření archivů ZIP pomocí C#. Článek se také zabýval tím, jak vytvořit šifrované a heslem chráněné archivy ZIP. Kromě formátu ZIP existují některé další běžně používané archivní formáty jako 7z, tar, RAR atd. Mezi nimi je formát archivu 7z založen na architektuře open source a používá se ke kompresi souborů a složek s vysokým kompresním poměrem. Podporuje také 256bitové šifrování AES a umožňuje šifrovat i názvy souborů. V tomto článku ukážu, jak vytvořit 7z (7-Zip) archivy programově pomocí C#.

Tento článek je rozdělen do následujících sekcí:

Všechny kroky a ukázky kódu v tomto článku jsou založeny na Aspose.ZIP for .NET. Proto se ujistěte, že jste nainstalovali API pomocí některé z následujících metod:

Vytvořte archiv 7z (7-Zip) pomocí C#

Mohou existovat dva možné scénáře komprese souborů do 7z archivu. Buď máte pouze jeden soubor, nebo může existovat spousta souborů ke komprimaci. S oběma scénáři se můžete vypořádat explicitně.

Vytvořte 7z archiv s jediným záznamem

Následují kroky k vytvoření 7z archivu s jedním záznamem.

Následující ukázka kódu ukazuje, jak vytvořit archiv 7z (7-Zip) pomocí C#.

using (FileStream sevenZipFile = File.Open("archive.7z", FileMode.Create))
{
    using (var archive = new SevenZipArchive())
    {
        archive.CreateEntry("data.bin", "file.dat");
        archive.Save(sevenZipFile);
    }
}

Vytvořte archiv 7z s více položkami

V tomto případě můžete umístit soubory do složky a předat cestu ke složce metodě SevenZipArchive.CreateEntries(). Následují kroky k přidání více záznamů souborů do archivu 7z.

Následující ukázka kódu ukazuje, jak vytvořit archiv 7z s více položkami pomocí C#.

using (SevenZipArchive archive = new SevenZipArchive())
{
    archive.CreateEntries(dataDir);
    archive.Save("SevenZip.7z");
}

Vytvořte AES Encrypted 7z Archive pomocí C#

Formát 7z podporuje šifrování AES pro zabezpečení souborů. K zašifrování souboru 7z se používá třída SevenZipAESEncryptionSettings. Následující ukázka kódu ukazuje, jak vytvořit AES šifrovaný archiv 7z pomocí C#.

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");
}

Nastavení různých hesel pro položky 7z pomocí C#

Formát 7z také umožňuje zadat jiné heslo pro každou položku souboru. Pokud se například chystáte komprimovat dva soubory v archivu 7z, můžete pro každý soubor zadat jiné heslo. Následují kroky k nastavení různých hesel pro položky 7z.

Následující ukázka kódu ukazuje, jak nastavit heslo pro každou položku v archivu 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);
    }
}

Závěr

V tomto článku jsme se naučili, jak vytvořit 7z archivy programově pomocí C#. Kromě toho jsme viděli, jak vytvořit AES šifrované soubory 7z a nastavit heslo pro každou položku souboru. Více o kompresi/dekompresi souborů se můžete dozvědět z zde.

Související články