Vytvořit ZIP v C#

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:

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:

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#:

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.

Viz také

Unrar nebo extrahovat soubory pomocí C#Rozbalte soubory v archivech ZIP pomocí jazyka C#Vytvořit 7z (7-Zip) archivy v C# .NET
Otevřít nebo extrahovat 7z (7zip) soubor v C# .NETVytvořit a extrahovat archivy GZip pomocí jazyka C#Převést soubory RAR do archivu ZIP v jazyce C#
Převést archivy ZIP na TAR v C#Vytvořit plochý archiv ZIP v C#Vytvořit spustitelný samorozbalovací archiv v C#
Vytvořit soubory TAR.GZ a TAR.XZ v C#Smazat soubory v archivu ZIP v C#Extract Nested ZIP Archives in C#
Sloučit více archivů ZIP nebo TAR v C#