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í:
- Vytvořte archiv 7z (7-Zip) pomocí C#
- Vytvořte AES Encrypted 7z Archive pomocí C#
- Nastavení různých hesel pro položky 7z pomocí C#
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:
- Nainstalujte pomocí NuGet Package Manager.
- Stažení DLL and add its reference to the project.
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.
- Otevřete nový FileStream a vytvořte soubor 7z.
- Vytvořte instanci třídy SevenZipArchive.
- Přidejte soubor do archivu pomocí metody SevenZipArchive.CreateEntry(String, String, Boolean, SevenZipEntrySettings).
- Vytvořte a uložte archiv pomocí metody SevenZipArchive.Save(Stream).
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.
- Vytvořte instanci třídy SevenZipArchive.
- Předejte cestu ke složce metodě SevenZipArchive.CreateEntries(String, Boolean).
- Zavolejte metodu SevenZipArchive.Save(String).
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.
- Vytvořte nový FileStream pro archivní soubor 7z.
- Získejte přístup ke každé položce souboru pomocí třídy FileInfo.
- Vytvořte instanci třídy SevenZipArchive.
- Vytvořte záznam do archivu 7z pomocí SevenZipArchive.CreateEntry(String, FileInfo, Boolean, SevenZipEntrySettings)
- Uložte archiv pomocí metody SevenZipArchive.Save(Stream).
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.