В предыдущем сообщении вы узнали о различных способах сжатия файлов и папок в архивы ZIP с помощью Aspose.ZIP для .NET. В этом посте я покажу вам, как извлекать или распаковывать файлы в ZIP-архивах с помощью C#. Мы также расскажем, как программно извлечь защищенные паролем или зашифрованные AES ZIP-архивы. Эта статья разделена на следующие разделы:
- C# API для распаковки файлов
- Распаковать файлы в ZIP-архивы на C#
- Распаковать ZIP-файлы, защищенные паролем
- Извлечь ZIP-файлы, зашифрованные AES, в C#
C# API для распаковки файлов
Прежде чем мы начнем, убедитесь, что вы загрузили и ссылаетесь на Aspose.ZIP для .NET или установили его пакет с помощью Диспетчера пакетов NuGet в своем проекте.
Распаковать ZIP-файлы с помощью C#
Процесс распаковки ZIP-файлов можно выполнить двумя способами:
- Распаковать каждый файл в ZIP отдельно
- Распаковать файлы в указанную папку
В первом методе вы можете явно получить доступ к каждому файлу в ZIP-архиве и разархивировать его. Кроме того, вы можете распечатать ход процесса извлечения. Принимая во внимание, что второй метод просто распаковывает файлы в указанную папку.
Извлечь каждый файл из архива отдельно
Ниже приведены шаги для доступа к файлам и их извлечения, а также для печати хода извлечения в C#.
- Откройте ZIP-архив в объект FileStream.
- Создайте и инициализируйте экземпляр Архив с помощью объекта FileStream.
- Получите доступ к файлам в ZIP, используя коллекцию Archive.Entries.
- Установите обработчик события ArchiveEntry.ExtractionProgressed для печати хода извлечения.
- Извлеките/разархивируйте файлы, используя метод ArchiveEntry.Extract(string).
В следующем примере кода показано, как извлечь файлы из ZIP-архива с помощью C#.
// Откройте ZIP-файл
using (FileStream zipFile = File.Open("compressed_files.zip", FileMode.Open))
{
using (Archive archive = new Archive(zipFile, new ArchiveLoadOptions()))
{
// Доступ к каждой записи в ZIP-архиве
for (int i = 0; i < archive.Entries.Count; i++)
{
int percentReady = 0;
// Запишите ход извлечения в консоль.
archive.Entries[i].ExtractionProgressed += (s, e) =>
{
int percent = (int)((100 * e.ProceededBytes) / ((ArchiveEntry)s).UncompressedSize);
if (percent > percentReady)
{
Console.WriteLine(string.Format("{0}% decompressed", percent));
percentReady = percent;
}
};
// Извлечь содержимое записи на диск.
archive.Entries[i].Extract(archive.Entries[i].Name);
}
}
}
Извлечь файлы в папку
Следующие шаги используются для извлечения файлов в определенную папку в C#.
- Откройте ZIP-архив с помощью класса FileStream.
- Создайте экземпляр класса Архив и инициализируйте его с помощью объекта ZIP FileStream.
- Разархивируйте файлы с помощью метода Archive.ExtractToDirectory(string).
В следующем примере кода C# файлы распаковываются в папку.
// Откройте ZIP-файл
using (FileStream zipFile = File.Open("compressed_files.zip", FileMode.Open))
{
using (var archive = new Archive(zipFile))
{
// Распаковать файлы в папку
archive.ExtractToDirectory("Unzipped Files");
}
}
Распаковать ZIP-файлы, защищенные паролем, в C#
Вы также можете распаковать ZIP-архив, защищенный паролем, с помощью Aspose.ZIP для .NET. Для этого нужно только указать пароль с помощью класса ArchiveLoadOptions, который будет передан вторым параметром конструктору Архива.
Ниже приведен пример кода для распаковки ZIP-файла, защищенного паролем.
// Откройте ZIP-файл
using (FileStream zipFile = File.Open("compressed_files.zip", FileMode.Open))
{
// Расшифровать с помощью пароля
using (var archive = new Archive(zipFile, new ArchiveLoadOptions() { DecryptionPassword = "p@s$" }))
{
// Извлечь файлы в папку
archive.ExtractToDirectory("Unzipped Files");
}
}
Извлечение ZIP-файлов, зашифрованных AES, на C#
ZIP-архив также можно зашифровать с помощью шифрования AES. Aspose.ZIP для .NET поддерживает шифрование архивов с помощью методов шифрования AES128, AES192 и AES256. Распаковка ZIP-файла, зашифрованного AES, аналогична распаковке ZIP-файлов, защищенных паролем. Просто укажите пароль для расшифровки с помощью класса ArchiveLoadOptions, а об остальном позаботится API.
В следующем примере кода показано, как распаковать ZIP-файлы, зашифрованные AES, в C#.
// Откройте ZIP-файл
using (FileStream zipFile = File.Open("encrypted.zip", FileMode.Open))
{
// Расшифровать и извлечь в папку
new Archive(zipFile, new ArchiveLoadOptions() { DecryptionPassword = "p@s$" }).ExtractToDirectory("decrypted");
}
Получите бесплатную лицензию API
Вы можете использовать Aspose.ZIP для .NET без оценочных ограничений, получив бесплатную временную лицензию.
Вывод
В этой статье вы узнали, как распаковывать ZIP-файлы с помощью C#. Кроме того, вы видели, как распаковывать файлы в ZIP-архивах, защищенных паролем. В примерах кода также показано, как извлекать файлы из зашифрованного ZIP-архива на C#. Вы можете узнать больше об Aspose.ZIP для .NET, используя документацию.