Create ZIP in C#

Въведение в ZIP архивите

ZIP архиви са от съществено значение за компресиране и консолидиране на множество файлове или папки в един контейнер. Този формат не само намалява размера на файловете за съхранение и предаване, но също така запазва метаданните, опростявайки управлението на файловете. ZIP архиви се използват широко както в настолни, така и в уеб приложения за задачи като качване, изтегляне, споделяне и защита на файлове чрез криптиране.

В тази статия ще се задълбочим в различни методи за програмирано създаване на ZIP архиви в C#. В края ще знаете как да:

C# ZIP библиотека

Това Aspose.ZIP for .NET е мощен API, създаден за компресиране и декомпресиране на файлове и папки в .NET приложения. Той предлага AES криптиране за защита на вашите файлове в ZIP архиви. Можете лесно да инсталирате API-то от NuGet или изтеглете бинарните файлове от the Изтегляния раздел.

Създайте архив ZIP в C#

За да компресирате файл в архив ZIP, следвайте тези стъпки:

  1. Създайте FileStream обект за изходния ZIP архив.
  2. Отворете изходния файл с FileStream обект.
  3. Създайте екземпляр на Архив клас.
  4. Добавете файла към архива, като използвате Archive.CreateEntry(string, FileStream) метод.
  5. Запазете архива ZIP с Archive.Save(FileStream) метод.

Ето пример с код, който демонстрира как да добавите файл към ZIP архив, използвайки C#:

using Aspose.Zip;
using Aspose.Zip.Saving;
// Create FileStream for output ZIP archive
using (FileStream zipFile = File.Open("compress_directory.zip", FileMode.Create))
{
	using (Archive archive = new Archive(new ArchiveEntrySettings(null, new AesEcryptionSettings("p@s$", EncryptionMethod.AES128))))
	{
		// Add folder to archive
		DirectoryInfo corpus = new DirectoryInfo("CanterburyCorpus");
		archive.CreateEntries(corpus);
		// Create ZIP archive
		archive.Save(zipFile);
	}
}

Добавяне на множество файлове към ZIP архив в C#

За да добавите множество файлове към ZIP архив, можете да изберете от следните методи:

Използване на FileStream

Използвайте FileStream клас за zip файлове в C# чрез добавяне на множество файлове към архива ZIP с Archive.CreateEntry(String, FileStream) метод. Ето как:

using Aspose.Zip;
using Aspose.Zip.Saving;
// Create FileStream for output ZIP archive
using (FileStream zipFile = File.Open("compress_directory.zip", FileMode.Create))
{
	using (Archive archive = new Archive(new ArchiveEntrySettings(null, new AesEcryptionSettings("p@s$", EncryptionMethod.AES128))))
	{
		// Add folder to archive
		DirectoryInfo corpus = new DirectoryInfo("CanterburyCorpus");
		archive.CreateEntries(corpus);
		// Create ZIP archive
		archive.Save(zipFile);
	}
}

Използване на FileInfo

Алтернативно, използвайте FileInfo клас, за да добавите файлове. Този метод зарежда файловете, използвайки FileInfo клас и ги добавя към архива ZIP с Archive.CreateEntry(String, FileInfo) метод. Вижте примера по-долу:

using Aspose.Zip;
using Aspose.Zip.Saving;
// Create FileStream for output ZIP archive
using (FileStream zipFile = File.Open("compress_directory.zip", FileMode.Create))
{
	using (Archive archive = new Archive(new ArchiveEntrySettings(null, new AesEcryptionSettings("p@s$", EncryptionMethod.AES128))))
	{
		// Add folder to archive
		DirectoryInfo corpus = new DirectoryInfo("CanterburyCorpus");
		archive.CreateEntries(corpus);
		// Create ZIP archive
		archive.Save(zipFile);
	}
}

Използване на път към файл

Можете също да добавяте файлове директно, като предоставите техните пътища към Archive.CreateEntry(String name, String path, Boolean openImmediately, ArchiveEntrySettings newEntrySettings) метод. Ето как да създайте ZIP файл в C#:

using Aspose.Zip;
using Aspose.Zip.Saving;
// Create FileStream for output ZIP archive
using (FileStream zipFile = File.Open("compress_directory.zip", FileMode.Create))
{
	using (Archive archive = new Archive(new ArchiveEntrySettings(null, new AesEcryptionSettings("p@s$", EncryptionMethod.AES128))))
	{
		// Add folder to archive
		DirectoryInfo corpus = new DirectoryInfo("CanterburyCorpus");
		archive.CreateEntries(corpus);
		// Create ZIP archive
		archive.Save(zipFile);
	}
}

Добавяне на папки към ZIP архив в C#

Добавянето на папка към ZIP архив е удобен начин за включване на множество файлове. За zip файлове в C#, следвайте тези стъпки:

  1. Създайте FileStream обект за изходния ZIP архив.
  2. Създайте екземпляр на Архив клас.
  3. Използвайте DirectoryInfo клас, за да посочите папката, която да бъде компресирана.
  4. Добавете папката към ZIP като използвате Archive.CreateEntries(DirectoryInfo) метод.
  5. Запазете архива ZIP с Archive.Save(FileStream) метод.

Ето пример с код, който демонстрира как да добавите папка към ZIP архив в C#:

using Aspose.Zip;
using Aspose.Zip.Saving;
// Create FileStream for output ZIP archive
using (FileStream zipFile = File.Open("compress_directory.zip", FileMode.Create))
{
	using (Archive archive = new Archive(new ArchiveEntrySettings(null, new AesEcryptionSettings("p@s$", EncryptionMethod.AES128))))
	{
		// Add folder to archive
		DirectoryInfo corpus = new DirectoryInfo("CanterburyCorpus");
		archive.CreateEntries(corpus);
		// Create ZIP archive
		archive.Save(zipFile);
	}
}

Създайте паролно защитен ZIP с помощта на ZipCrypto в C#

За подобряване на сигурността можете да създавате архиви ZIP с парола, като използвате ZipCrypto шифроване. Това се постига чрез използване на ArchiveEntrySettings клас в конструктора на Archive, което ви позволява да зададете типа на шифроване.

Ето пример за това как да създадете паролно защитен ZIP архив, използвайки ZipCrypto в C#:

using Aspose.Zip;
using Aspose.Zip.Saving;
// Create FileStream for output ZIP archive
using (FileStream zipFile = File.Open("compress_directory.zip", FileMode.Create))
{
	using (Archive archive = new Archive(new ArchiveEntrySettings(null, new AesEcryptionSettings("p@s$", EncryptionMethod.AES128))))
	{
		// Add folder to archive
		DirectoryInfo corpus = new DirectoryInfo("CanterburyCorpus");
		archive.CreateEntries(corpus);
		// Create ZIP archive
		archive.Save(zipFile);
	}
}

Създаване на защитен с парола ZIP с AES шифроване

Библиотеката Aspose.ZIP за .NET също поддържа AES шифроване за защита на ZIP архиви. Можете да избирате от следните методи за AES шифроване:

  • AES128
  • AES192
  • AES256

За прилагане на AES шифроване, използвайте AesEcryptionSettings клас. Ето как да създадете защитен с парола ZIP с AES шифроване в C#:

using Aspose.Zip;
using Aspose.Zip.Saving;
// Create FileStream for output ZIP archive
using (FileStream zipFile = File.Open("compress_directory.zip", FileMode.Create))
{
	using (Archive archive = new Archive(new ArchiveEntrySettings(null, new AesEcryptionSettings("p@s$", EncryptionMethod.AES128))))
	{
		// Add folder to archive
		DirectoryInfo corpus = new DirectoryInfo("CanterburyCorpus");
		archive.CreateEntries(corpus);
		// Create ZIP archive
		archive.Save(zipFile);
	}
}

Задаване на режим на паралелно компресиране

За случаи, включващи множество записи, конфигурирайте API за паралелно компресиране, използвайки ParallelOptions клас. Aspose.ZIP за .NET предоставя няколко режима за паралелно компресиране:

  • Никога - Не компресирайте паралелно.
  • Винаги - Винаги компресирайте паралелно (внимавайте за проблеми с недостиг на памет).
  • Авто - Автоматично решавайте дали да се използва паралелна компресия въз основа на записите.

Ето пример, който демонстрира как да зададете режим на паралелно компресиране, докато компресирате множество файлове:

using Aspose.Zip;
using Aspose.Zip.Saving;
// For complete examples and data files, please go to https://github.com/aspose-zip/Aspose.ZIP-for-.NET
string dataDir = "";
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);
                //Define the parallelism criterion
                var parallelOptions = new Aspose.Zip.Saving.ParallelOptions
                {
                    ParallelCompressInMemory = ParallelCompressionMode.Always
                };
                archive.Save(zipFile,
                    new ArchiveSaveOptions()
                    {
                        ParallelOptions = parallelOptions,
                        Encoding = Encoding.ASCII,
                        ArchiveComment = "There are two poems from Canterbury corpus"
                    });
            }
        }
    }
}

Научете повече за библиотеката C# .NET ZIP

Потопете се по‑дълбоко в нашия C# .NET ZIP API с помощта на следните ресурси:

Изпробвайте ZIP архиви онлайн

Разгледайте нашия безплатно онлайн приложение, базирано на Aspose.ZIP за .NET, за безпроблемно компресиране на файлове в ZIP архиви effortlessly.

Заключение

В тази статия научихте как да програмирано създавате ZIP архиви в C#. Предоставените примерни кодове илюстрират как да компресирате файлове в C#, да добавяте файлове и папки към ZIP архиви и да създавате архиви ZIP с парола, използвайки както ZipCrypto, така и AES методи за криптиране. Също така обсъдихме паралелно компресиране за ефективно обработване на големи файлове и дори се докоснахме до как да компресирате файлове в .NET с C#. Ако имате въпроси или се нуждаете от допълнителна помощ, не се колебайте да се свържете с нас чрез нашия форум.

Вижте също

Unrar или извличане на файлове с C#Разархивиране на файлове в ZIP архиви с C#Създаване на 7z (7-Zip) архиви в C# .NET
Отваряне или извличане на 7z (7zip) файл в C# .NETСъздаване и извличане на GZip архиви с C#Конвертиране на RAR файлове в ZIP архив в C#
Конвертиране на ZIP архиви в TAR с C#Създаване на плосък ZIP архив в C#Създаване на изпълним саморазархивиращ се архив в C#
Създаване на TAR.GZ и TAR.XZ файлове в C#Изтриване на файлове в ZIP архив в C#Извличане на вложени ZIP архиви в C#
Обединяване на множество ZIP или TAR архиви в C#Как да създадем ZIP файловеИзвличане на 7z онлайн

More in this category