
Въведение в ZIP архивите
ZIP архиви са от съществено значение за компресиране и консолидиране на множество файлове или папки в един контейнер. Този формат не само намалява размера на файловете за съхранение и предаване, но също така запазва метаданните, опростявайки управлението на файловете. ZIP архиви се използват широко както в настолни, така и в уеб приложения за задачи като качване, изтегляне, споделяне и защита на файлове чрез криптиране.
В тази статия ще се задълбочим в различни методи за програмирано създаване на ZIP архиви в C#. В края ще знаете как да:
- Създаване на ZIP архив с помощта на C#
- Добавяне на множество файлове към ZIP архив
- Добавяне на папки към ZIP архив
- Създайте архив ZIP с парола, използвайки ZipCrypto
- Криптирайте архив ZIP с AES криптиране
- Задайте режим на паралелно компресиране
- Как да компресирате файлове в .NET с C#
C# ZIP библиотека
Това Aspose.ZIP for .NET е мощен API, създаден за компресиране и декомпресиране на файлове и папки в .NET приложения. Той предлага AES криптиране за защита на вашите файлове в ZIP архиви. Можете лесно да инсталирате API-то от NuGet или изтеглете бинарните файлове от the Изтегляния раздел.
Създайте архив ZIP в C#
За да компресирате файл в архив ZIP, следвайте тези стъпки:
- Създайте FileStream обект за изходния ZIP архив.
- Отворете изходния файл с FileStream обект.
- Създайте екземпляр на Архив клас.
- Добавете файла към архива, като използвате Archive.CreateEntry(string, FileStream) метод.
- Запазете архива 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#, следвайте тези стъпки:
- Създайте FileStream обект за изходния ZIP архив.
- Създайте екземпляр на Архив клас.
- Използвайте DirectoryInfo клас, за да посочите папката, която да бъде компресирана.
- Добавете папката към ZIP като използвате Archive.CreateEntries(DirectoryInfo) метод.
- Запазете архива 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#. Ако имате въпроси или се нуждаете от допълнителна помощ, не се колебайте да се свържете с нас чрез нашия форум.