
Archivy ZIP se používají ke kompresi a uložení jednoho nebo více souborů nebo složek do jednoho kontejneru. Archiv ZIP zapouzdřuje soubory a složky a také obsahuje informace o jejich metadatech. Nejběžnějším využitím archivace je zmenšení velikosti souborů pro ukládání nebo přenos a použití šifrování pro zabezpečení. Kromě nástrojů pro kompresi souborů se funkce automatické komprese/extrakce používají také v různých desktopových a webových aplikacích pro nahrávání, stahování, sdílení nebo šifrování souborů. Tento článek se také zaměřuje na podobné scénáře a představuje některé snadné způsoby komprimace souborů nebo složek a vytváření archivů ZIP programově pomocí C#.
V tomto článku se dozvíte, jak provádět následující operace archivace ZIP:
- Vytvořte ZIP archiv pomocí C#
- Přidejte více souborů do archivu ZIP
- Přidejte složky do archivu ZIP
- Vytvořte heslem chráněný ZIP archiv pomocí ZipCrypto
- Šifrujte archiv ZIP pomocí šifrování AES
- Nastavte režim paralelní komprese
C# ZIP knihovna
Aspose.ZIP for .NET je výkonné a snadno použitelné rozhraní API pro zipování nebo rozbalování souborů a složek v aplikacích .NET. Poskytuje také šifrovací techniky AES pro šifrování souborů v ZIP v C#. API můžete nainstalovat z NuGet nebo si stáhnout jeho binární soubory ze sekce Downloads.
Vytvořte ZIP archiv v C#
Níže jsou uvedeny kroky ke komprimaci souboru jeho přidáním do archivu ZIP:
- Vytvořte objekt FileStream pro výstupní archiv ZIP.
- Otevřete zdrojový soubor do objektu FileStream.
- Vytvořte objekt třídy Archive.
- Přidejte soubor do archivu pomocí metody Archive.CreateEntry(string, FileStream).
- Vytvořte archiv ZIP pomocí metody Archive.Save(FileStream).
Následující ukázka kódu ukazuje, jak přidat soubor do archivu ZIP pomocí C#.
// Vytvořte FileStream pro výstupní archiv ZIP
using (FileStream zipFile = File.Open("compressed_file.zip", FileMode.Create))
{
// Soubor, který má být přidán do archivu
using (FileStream source1 = File.Open("alice29.txt", FileMode.Open, FileAccess.Read))
{
using (var archive = new Archive(new ArchiveEntrySettings()))
{
// Přidat soubor do archivu
archive.CreateEntry("alice29.txt", source1);
// ZIP soubor
archive.Save(zipFile);
}
}
}
Přidat více souborů do ZIP archivu v C#
V případě, že chcete do archivu ZIP přidat více souborů, můžete to provést jedním z následujících způsobů.
C# ZIP více souborů pomocí FileStream
V této metodě se třída FileStream používá k přidávání souborů do archivu ZIP pomocí metody Archive.CreateEntry(String, FileStream). Následující ukázka kódu ukazuje, jak přidat více souborů do ZIP v C#.
// Vytvořte FileStream pro výstupní archiv ZIP
using (FileStream zipFile = File.Open("compressed_files.zip", FileMode.Create))
{
// Soubor, který má být přidán do archivu
using (FileStream source1 = File.Open("alice29.txt", FileMode.Open, FileAccess.Read))
{
// Soubor, který má být přidán do archivu
using (FileStream source2 = File.Open("asyoulike.txt", FileMode.Open, FileAccess.Read))
{
using (var archive = new Archive())
{
// Přidejte soubory do archivu
archive.CreateEntry("alice29.txt", source1);
archive.CreateEntry("asyoulik3.txt", source2);
// ZIP soubory
archive.Save(zipFile, new ArchiveSaveOptions() { Encoding = Encoding.ASCII, ArchiveComment = "two files are compressed in this archive" });
}
}
}
}
C# ZIP Více souborů pomocí FileInfo
Můžete také použít třídu FileInfo pro přidání více souborů do archivu ZIP. V této metodě budou soubory načteny pomocí třídy FileInfo a přidány do archivu ZIP pomocí metody Archive.CreateEntry(String, FileInfo). Následující ukázka kódu ukazuje, jak ZIP více souborů pomocí třídy FileInfo v C#.
// Vytvořte FileStream pro výstupní archiv ZIP
using (FileStream zipFile = File.Open("compressed_files.zip", FileMode.Create))
{
// Soubory, které mají být přidány do archivu
FileInfo fi1 = new FileInfo("alice29.txt");
FileInfo fi2 = new FileInfo("fields.c");
using (var archive = new Archive())
{
// Přidejte soubory do archivu
archive.CreateEntry("alice29.txt", fi1);
archive.CreateEntry("fields.c", fi2);
// Vytvořte ZIP archiv
archive.Save(zipFile, new ArchiveSaveOptions() { Encoding = Encoding.ASCII });
}
}
Soubory ZIP pomocí cesty
Namísto použití tříd FileInfo nebo FileStream pro položky ZIP můžete zadat cestu k souboru přímo metodě Archive.CreateEntry(Název řetězce, Cesta řetězce, Boolean openImmediately, ArchiveEntrySettings newEntrySettings). Následující ukázka kódu ukazuje, jak ZIP soubory pomocí jejich cesty.
// Vytvořte FileStream pro výstupní archiv ZIP
using (FileStream zipFile = File.Open("archive.zip", FileMode.Create))
{
// Vytvořit archiv
using (var archive = new Archive())
{
// Přidat soubor do archivu ZIP
archive.CreateEntry("data.bin", "file.dat");
archive.Save(zipFile);
}
}
Přidání složek do ZIP archivu v C#
Složku můžete zazipovat pomocí knihovny ZIP C#, což by mohla být další alternativa přidání více souborů do archivu ZIP. Stačí vložit zdrojové soubory do složky a přidat tuto složku do archivu ZIP. Níže jsou uvedeny kroky pro ZIP složky v C#:
- Vytvořte objekt třídy FileStream pro výstupní archiv ZIP.
- Vytvořte instanci třídy Archive.
- Pomocí třídy DirectoryInfo zadejte složku, která se má zazipovat.
- K přidání složky do ZIP použijte metodu Archive.CreateEntries(DirectoryInfo).
- Vytvořte archiv ZIP pomocí metody Archive.Save(FileStream).
Následující ukázka kódu ukazuje, jak přidat složku do ZIP v C#.
// Vytvořte FileStream pro výstupní archiv ZIP
using (FileStream zipFile = File.Open("compress_directory.zip", FileMode.Create))
{
using (Archive archive = new Archive())
{
// Složka k zazipování
DirectoryInfo corpus = new DirectoryInfo("CanterburyCorpus");
archive.CreateEntries(corpus);
// Vytvořte ZIP archiv
archive.Save(zipFile);
}
}
Vytvořte ZIP chráněný heslem pomocí ZipCrypto v C#
Archivy ZIP můžete chránit hesly a použít šifrování ZipCrypto. K tomu se v konstruktoru Archive používá třída ArchiveEntrySettings, která přijímá typ šifrování jako druhý parametr.
Následující ukázka kódu ukazuje, jak vytvořit heslem chráněný ZIP archiv pomocí ZipCrypto v C#.
// Vytvořte FileStream pro výstupní archiv ZIP
using (FileStream zipFile = File.Open("compress_directory.zip", FileMode.Create))
{
using (Archive archive = new Archive(new ArchiveEntrySettings(null, new TraditionalEncryptionSettings("p@s$"))))
{
// Přidat složku do archivu
DirectoryInfo corpus = new DirectoryInfo("CanterburyCorpus");
archive.CreateEntries(corpus);
// Vytvořit archiv ZIP
archive.Save(zipFile);
}
}
C# Vytvořte ZIP chráněný heslem s šifrováním AES
Aspose.ZIP for .NET také umožňuje použít šifrování AES k ochraně archivů ZIP. Můžete použít následující metody šifrování AES:
- AES128
- AES192
- AES256
Aby bylo možné použít šifrování AES, nabízí API třídu AesEcryptionSettings. Následující ukázka kódu ukazuje, jak vytvořit heslem chráněný ZIP se šifrováním AES v C#.
// Vytvořte FileStream pro výstupní archiv ZIP
using (FileStream zipFile = File.Open("compress_directory.zip", FileMode.Create))
{
using (Archive archive = new Archive(new ArchiveEntrySettings(null, new AesEcryptionSettings("p@s$", EncryptionMethod.AES128))))
{
// Přidat složku do archivu
DirectoryInfo corpus = new DirectoryInfo("CanterburyCorpus");
archive.CreateEntries(corpus);
// Vytvořit archiv ZIP
archive.Save(zipFile);
}
}
Nastavte režim paralelní komprese
Můžete také nakonfigurovat API pro paralelní kompresi v případě více položek. Za tímto účelem můžete určit režim paralelní komprese pomocí třídy ParallelOptions. Aspose.ZIP for .NET poskytuje následující paralelní režimy komprese.
- Nikdy - Nestlačujte paralelně.
- Vždy - Provádějte komprimaci paralelně (pozor na nedostatek paměti).
- Automaticky – rozhodněte, zda u položek použít paralelní kompresi či nikoli. Tato možnost může komprimovat pouze některé položky paralelně.
Následující ukázka kódu ukazuje, jak nastavit režim paralelní komprese při komprimování více souborů pomocí knihovny Aspose C# ZIP.
// Úplné příklady a datové soubory najdete na https://github.com/aspose-zip/Aspose.ZIP-for-.NET
using (FileStream zipFile = File.Open(dataDir + "UsingParallelismToCompressFiles_out.zip", FileMode.Create))
{
using (FileStream source1 = File.Open(dataDir + "alice29.txt", FileMode.Open, FileAccess.Read))
{
using (FileStream source2 = File.Open(dataDir + "asyoulik.txt", FileMode.Open, FileAccess.Read))
{
using (var archive = new Archive())
{
archive.CreateEntry("alice29.txt", source1);
archive.CreateEntry("asyoulik.txt", source2);
//Definujte kritérium rovnoběžnosti
var parallelOptions = new ParallelOptions
{
ParallelCompressInMemory = ParallelCompressionMode.Always
};
archive.Save(zipFile,
new ArchiveSaveOptions()
{
ParallelOptions = parallelOptions,
Encoding = Encoding.ASCII,
ArchiveComment = "There are two poems from Canterbury corpus"
});
}
}
}
}
Další informace o knihovně ZIP C# .NET
Prozkoumejte více o našem C# ZIP API pomocí následujících zdrojů:
Vytvářejte archivy ZIP online
Můžete také vyzkoušet naši bezplatnou online aplikaci, která je založena na Aspose.ZIP for .NET, a komprimovat soubory do archivů ZIP.
Závěr
V tomto článku jste se naučili vytvářet ZIP archivy programově v C#. Ukázky kódu ukázaly, jak přidat soubory a složky do archivů ZIP. Kromě toho jsme se také zabývali tím, jak vytvořit archivy ZIP chráněné heslem pomocí metod šifrování ZipCrypto a AES pomocí knihovny ZIP C# Aspose. Kromě toho je na konci diskutována také paralelní komprese více položek. V případě, že byste měli nějaké dotazy nebo dotazy, můžete se nás zeptat na našem fóru.