Распаковать файлы в C#

В предыдущем сообщении вы узнали о различных способах сжатия файлов и папок в архивы ZIP с помощью Aspose.ZIP для .NET. В этом посте я покажу вам, как извлекать или распаковывать файлы в ZIP-архивах с помощью C#. Мы также расскажем, как программно извлечь защищенные паролем или зашифрованные AES ZIP-архивы. Эта статья разделена на следующие разделы:

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, используя документацию.

Статьи по Теме