Извлечение архивных файлов в C# и .NET
Программно распаковывайте ZIP и другие архивные форматы в .NET-приложениях.
Извлечение архивов в .NET
Aspose.ZIP for .NET — управляемая библиотека для открытия архивов и извлечения их содержимого в приложениях C#. API позволяет читать записи архива, извлекать все элементы или только выбранные файлы, сохранять структуру каталогов и записывать результат в папку или поток. Обработка остается внутри приложения, поэтому серверные сценарии не зависят от настольных программ или утилит командной строки.
Типичные сценарии включают прием документов, восстановление резервных копий, обработку пакетов развертывания, загрузки пользователей и автоматический обмен данными. Один и тот же API можно использовать в сервисах ASP.NET, фоновых процессах, настольных приложениях, облачных задачах и CI/CD-конвейерах.
Точный workflow зависит от формата. ZIP, 7Z, RAR, TAR и CAB используют разные структуры контейнера, методы сжатия и API-классы. Этот обзор описывает общий процесс извлечения, а страницы конкретных форматов уточняют нужные классы, параметры и ограничения.
Что такое экстрактор архивов?
Экстрактор архивов открывает контейнер, содержащий один или несколько файлов, и восстанавливает сохраненное содержимое. Обычно процесс читает метаданные, определяет записи и каталоги, распаковывает данные и записывает результат в разрешенное место. Для зашифрованных архивов также нужны корректные учетные данные и параметры, поддерживаемые форматом.
Термины extract, unpack и decompress часто используются для близких операций. Когда разработчик говорит о распаковке ZIP, он имеет в виду извлечение содержимого из ZIP-контейнера. Извлечение архивов шире и охватывает 7Z, RAR, TAR, CAB, CPIO, XZ и другие форматы.
Как работает извлечение архивов
- Получите архив из локального пути, загрузки, потока или сервиса хранения.
- Проверьте, поддерживает ли приложение этот формат.
- Откройте контейнер API-классом, предназначенным для формата.
- Проверьте записи, если требуется фильтрация или выборочное извлечение.
- Проверьте выходные пути и лимиты ресурсов перед записью файлов.
- Извлеките утвержденные записи в изолированное место назначения.
- Передайте результат следующему этапу приложения и удалите временные данные.
Архивные форматы, доступные для извлечения
Библиотека работает с популярными архивными форматами и форматами сжатия, включая ZIP, 7Z, RAR, TAR, GZIP, BZIP2, XZ, LZIP, Z, CPIO, CAB и WIM. Доступные операции различаются: одни форматы содержат много записей, другие представляют один сжатый поток или TAR-контейнер с дополнительным слоем сжатия.
Распространенные сценарии извлечения файлов
Распаковка всего архива. Используйте полное извлечение, когда нужны все записи и входные данные уже прошли проверку. При необходимости сохраняйте исходную иерархию каталогов и назначайте отдельное место назначения для каждой задачи.
Чтение только выбранных записей. Перебирайте Archive.Entries и применяйте правила приложения до записи данных. Это удобно, когда пакет содержит много ресурсов, но workflow нужен только документ, manifest, конфигурация или известная папка.
Обработка потока. Потоковый ввод подходит для загрузок ASP.NET, object storage, баз данных и систем сообщений. Явно задавайте владение и срок жизни потока и не загружайте в память архив без ограничений.
Открытие защищенного содержимого. Передавайте учетные данные через параметры расшифровки соответствующего формата. Пароли должны поступать из защищенной конфигурации или хранилища секретов и не попадать в логи.
Добавление Aspose.ZIP в проект C#
Установите пакет Aspose.ZIP NuGet в C#-проект для поддерживаемой среды .NET в Windows, Linux или macOS. Затем подключите нужное пространство имен и выберите класс, соответствующий входному контейнеру.
Package Manager Console
PM> Install-Package Aspose.Zip
Пример C#: распаковка ZIP-файла
ZIP дает краткий пример общего workflow. Код открывает входной файл и записывает содержимое в целевой каталог. Перед использованием этого шаблона с внешними файлами проверяйте контейнер, выходные пути и лимиты ресурсов.
Извлечение содержимого ZIP в каталог
using Aspose.Zip;
using System.IO;
string archivePath = Path.GetFullPath("input.zip");
string outputDirectory = Path.GetFullPath("extracted");
Directory.CreateDirectory(outputDirectory);
using (var archive = new Archive(archivePath))
{
archive.ExtractToDirectory(outputDirectory);
}
Безопасное извлечение архивов в production
Архивы от пользователей или внешних систем рассматривайте как недоверенный ввод. Ожидаемое расширение не доказывает, что контейнер корректен или безопасен. Перед записью записи разрешайте выходной путь относительно утвержденной папки и отклоняйте абсолютные пути, переходы к родительским каталогам и результаты вне этой папки. Ограничивайте сжатый размер, размер после распаковки, число записей, время выполнения и параллелизм.
Проверка извлечения в браузере
Бесплатное онлайн-приложение для извлечения позволяет проверить пример входных данных без установки ПО. Это удобно перед реализацией workflow в C#.
Руководства по извлечению для типов файлов
Детали реализации зависят от контейнера и сохраненного формата. Форматное руководство должно указывать правильный класс Aspose.ZIP, примеры полного и выборочного извлечения, поведение паролей и шифрования, потоковую обработку, ограничения и ссылки на API.
Руководства по извлечению архивов по формату файла
Просмотрите страницы C# для файлов и ресурсов, которые часто хранятся в ZIP-архивах.
</div>
</div>
Ресурсы по извлечению архивов
FAQ по извлечению архивов
1. Как извлечь архивные файлы в C#?
Установите Aspose.ZIP, откройте входные данные классом, соответствующим формату, и извлеките весь контейнер или выбранные записи в утвержденный каталог либо поток.
2. Как извлечь файлы из ZIP-архива?
Создайте экземпляр Archive для ZIP и вызовите ExtractToDirectory для полной распаковки. Если нужны только отдельные элементы, перебирайте Archive.Entries.
3. Извлечение архива — это то же самое, что распаковка ZIP?
Распаковка ZIP относится именно к ZIP-файлам. Извлечение шире и также охватывает 7Z, RAR, TAR, CAB, CPIO и WIM.
4. Могут ли .NET-приложения открывать архивы с паролем?
Aspose.ZIP поддерживает доступ по паролю для применимых форматов при наличии корректных учетных данных и параметров расшифровки.
5. Как безопасно извлекать архивы, загруженные пользователями?
Используйте изолированное временное хранилище, проверяйте каждый выходной путь, ограничивайте форматы и размеры, задавайте тайм-аут и удаляйте временные данные.