Поделиться через


ZipFile.ExtractToDirectory Метод

Определение

Извлекает все файлы в указанном ZIP-архиве в каталог файловой системы.

Перегрузки

Имя Описание
ExtractToDirectory(String, String, Encoding, Boolean)

Извлекает все файлы в указанном архиве в каталог файловой системы.

ExtractToDirectory(Stream, String, Encoding, Boolean)

Извлекает все файлы из ZIP-архива, хранящегося в указанном потоке, и помещает их в указанный целевой каталог в файловой системе, использует указанную кодировку символов для имен записей и комментариев, и при необходимости позволяет выбрать, следует ли перезаписывать файлы в целевом каталоге.

ExtractToDirectory(String, String, Encoding)

Извлекает все файлы в указанном ZIP-архиве в каталог файловой системы и использует указанную кодировку символов для имен записей и комментариев.

ExtractToDirectory(String, String, Boolean)

Извлекает все файлы в указанном архиве в каталог файловой системы.

ExtractToDirectory(Stream, String, Boolean)

Извлекает все файлы из ZIP-архива, хранящегося в указанном потоке, и помещает их в указанный целевой каталог в файловой системе, и при необходимости позволяет выбрать, следует ли перезаписывать файлы в целевом каталоге.

ExtractToDirectory(String, String)

Извлекает все файлы в указанном ZIP-архиве в каталог файловой системы.

ExtractToDirectory(Stream, String)

Извлекает все файлы из ZIP-архива, хранящегося в указанном потоке, и помещает их в указанный целевой каталог в файловой системе.

ExtractToDirectory(Stream, String, Encoding)

Извлекает все файлы из ZIP-архива, хранящегося в указанном потоке, и помещает их в указанный целевой каталог в файловой системе и использует указанную кодировку символов для имен и комментариев.

ExtractToDirectory(String, String, Encoding, Boolean)

Исходный код:
ZipFile.Extract.cs
Исходный код:
ZipFile.Extract.cs
Исходный код:
ZipFile.Extract.cs
Исходный код:
ZipFile.Extract.cs
Исходный код:
ZipFile.Extract.cs

Извлекает все файлы в указанном архиве в каталог файловой системы.

public:
 static void ExtractToDirectory(System::String ^ sourceArchiveFileName, System::String ^ destinationDirectoryName, System::Text::Encoding ^ entryNameEncoding, bool overwriteFiles);
public static void ExtractToDirectory(string sourceArchiveFileName, string destinationDirectoryName, System.Text.Encoding? entryNameEncoding, bool overwriteFiles);
public static void ExtractToDirectory(string sourceArchiveFileName, string destinationDirectoryName, System.Text.Encoding entryNameEncoding, bool overwriteFiles);
static member ExtractToDirectory : string * string * System.Text.Encoding * bool -> unit
Public Shared Sub ExtractToDirectory (sourceArchiveFileName As String, destinationDirectoryName As String, entryNameEncoding As Encoding, overwriteFiles As Boolean)

Параметры

sourceArchiveFileName
String

Путь к файловой системе в архив, который необходимо извлечь.

destinationDirectoryName
String

Путь к целевому каталогу в файловой системе.

entryNameEncoding
Encoding

Кодировка, используемая при чтении имен записей и комментариев в этом ZipArchiveразделе.

overwriteFiles
Boolean

true для перезаписи файлов; false Иначе.

Исключения

sourceArchiveFileName или destinationDirectoryName строка нулевой длины, содержит только пробелы или содержит один или несколько недопустимых символов, как определено InvalidPathChars.

–или–

entryNameEncoding для кодировки Юникода, отличной от UTF-8.

sourceArchiveFileName или destinationDirectoryName есть null.

sourceArchiveFileName или destinationDirectoryName задает путь, имя файла или оба значения, превышающие определенную системой максимальную длину.

Путь, указанный sourceArchiveFileName или destinationDirectoryName недопустимый (например, он находится на несопоставленном диске).

overwriteFilesfalse и архивная запись для извлечения имеет то же имя, что и файл, в который уже существует destinationDirectoryName.

–или–

Произошла ошибка ввода-вывода.

–или–

Имя нулевой ZipArchiveEntry длины, содержит только пробелы или содержит один или несколько недопустимых символов, как определено InvalidPathChars.

–или–

ZipArchiveEntry Извлечение приведет к назначению файла, который находится за пределами целевого каталога (например, из-за родительских методов доступа к каталогу).

–или–

Имя ZipArchiveEntry имеет то же имя, что и уже извлеченная запись из того же архива.

Вызывающий объект не имеет требуемого разрешения.

sourceArchiveFileName или destinationDirectoryName находится в недопустимом формате.

sourceArchiveFileName не найден.

Архив, указанный sourceArchiveFileName не является допустимым ZipArchive.

–или–

Архивная запись не найдена или повреждена.

–или–

Запись архива сжимается с помощью метода сжатия, который не поддерживается.

Комментарии

Если при извлечении архива возникает ошибка, архив останется частично извлеченным.

Каждая запись будет извлечена таким образом, что извлеченный файл имеет тот же относительный путь к destinationDirectoryName архиву, что и запись.

destinationDirectoryName Параметры sourceArchiveFileName принимают относительные и абсолютные пути. Относительный путь интерпретируется как относительный к текущему рабочему каталогу.

Если запись в ZIP-архиве является символьной ссылкой, она извлекается как обычная папка, так как сведения о символьной ссылке не сохраняются в формате ZIP. Если destinationDirectoryName или любой из его родительских каталогов является предварительно существующим соединением или символьной ссылкой, ссылка выполняется и извлечение записывается в окончательную целевую папку.

Если архивируемый файл имеет недопустимое время последнего изменения, будет использоваться первая дата и время, представляющееся в формате zip-метки времени (полночь 1 января 1980 г.).

Предупреждение

Этот метод не ограничивает общий несжатый размер или количество записей, извлеченных из архива. При обработке архивов из ненадежных источников выполните итерацию записей вручную с помощью ZipArchiveи убедитесь, что общий несжатый размер и количество записей находятся в допустимых ограничениях для вашего сценария.

Применяется к

ExtractToDirectory(Stream, String, Encoding, Boolean)

Исходный код:
ZipFile.Extract.cs
Исходный код:
ZipFile.Extract.cs
Исходный код:
ZipFile.Extract.cs
Исходный код:
ZipFile.Extract.cs

Извлекает все файлы из ZIP-архива, хранящегося в указанном потоке, и помещает их в указанный целевой каталог в файловой системе, использует указанную кодировку символов для имен записей и комментариев, и при необходимости позволяет выбрать, следует ли перезаписывать файлы в целевом каталоге.

public:
 static void ExtractToDirectory(System::IO::Stream ^ source, System::String ^ destinationDirectoryName, System::Text::Encoding ^ entryNameEncoding, bool overwriteFiles);
public static void ExtractToDirectory(System.IO.Stream source, string destinationDirectoryName, System.Text.Encoding? entryNameEncoding, bool overwriteFiles);
static member ExtractToDirectory : System.IO.Stream * string * System.Text.Encoding * bool -> unit
Public Shared Sub ExtractToDirectory (source As Stream, destinationDirectoryName As String, entryNameEncoding As Encoding, overwriteFiles As Boolean)

Параметры

source
Stream

Поток, из которого извлекается ZIP-архив.

destinationDirectoryName
String

Путь к каталогу, в котором будут размещаться извлеченные файлы, указанные как относительный или абсолютный путь. Относительный путь интерпретируется как относительный к текущему рабочему каталогу.

entryNameEncoding
Encoding

Кодировка, используемая при чтении или записи имен и комментариев в этом архиве. Укажите значение этого параметра, только если кодировка требуется для взаимодействия с средствами и библиотеками ZIP-архива, которые не поддерживают кодировку UTF-8 для имен записей или комментариев.

overwriteFiles
Boolean

true для перезаписи файлов; false Иначе.

Исключения

destinationDirectoryName is Empty, содержит только пробелы или содержит по крайней мере один недопустимый символ.

–или–

entryNameEncoding для кодировки Юникода, отличной от UTF-8.

destinationDirectoryName или source есть null.

Указанный путь превышает destinationDirectoryName заданную системой максимальную длину.

Указанный путь недопустим (например, он находится на несопоставленном диске).

Имя записи в архиве Empty: содержит только пробелы или содержит по крайней мере один недопустимый символ.

–или–

Извлечение записи архива создаст файл, который находится за пределами каталога, указанного в destinationDirectoryNameфайле. (Например, это может произойти, если имя записи содержит родительские методы доступа к каталогу.)

–или–

overwriteFilesfalse и архивная запись для извлечения имеет то же имя, что и запись, которая уже извлечена или в ней существует destinationDirectoryName.

Вызывающий объект не имеет требуемого разрешения для доступа к архиву или целевому каталогу.

destinationDirectoryName содержит недопустимый формат.

Архив, содержащийся в потоке source , не является допустимым ZIP-архивом.

–или–

Архивная запись не найдена или повреждена.

–или–

Запись архива была сжата с помощью метода сжатия, который не поддерживается.

Комментарии

Этот метод создает указанный каталог и все вложенные каталоги. Целевой каталог не может существовать. Исключения, связанные с проверкой путей в destinationDirectoryName zip-архиве или файлами, содержащимися в source параметрах, создаются перед извлечением. В противном случае, если во время извлечения возникает ошибка, архив остается частично извлеченным. Каждый извлеченный файл имеет тот же относительный путь к каталогу, указанному destinationDirectoryName в качестве исходной записи, имеет корень архива.

Если запись в ZIP-архиве является символьной ссылкой, она извлекается как обычная папка, так как сведения о символьной ссылке не сохраняются в формате ZIP. Если destinationDirectoryName или любой из его родительских каталогов является предварительно существующим соединением или символьной ссылкой, ссылка выполняется и извлечение записывается в окончательную целевую папку.

Если архивируемый файл имеет недопустимое время последнего изменения, будет использоваться первая дата и время, представляющееся в формате zip-метки времени (полночь 1 января 1980 г.).

Предупреждение

Этот метод не ограничивает общий несжатый размер или количество записей, извлеченных из архива. При обработке архивов из ненадежных источников выполните итерацию записей вручную с помощью ZipArchiveи убедитесь, что общий несжатый размер и количество записей находятся в допустимых ограничениях для вашего сценария.

Применяется к

ExtractToDirectory(String, String, Encoding)

Исходный код:
ZipFile.Extract.cs
Исходный код:
ZipFile.Extract.cs
Исходный код:
ZipFile.Extract.cs
Исходный код:
ZipFile.Extract.cs
Исходный код:
ZipFile.Extract.cs

Извлекает все файлы в указанном ZIP-архиве в каталог файловой системы и использует указанную кодировку символов для имен записей и комментариев.

public:
 static void ExtractToDirectory(System::String ^ sourceArchiveFileName, System::String ^ destinationDirectoryName, System::Text::Encoding ^ entryNameEncoding);
public static void ExtractToDirectory(string sourceArchiveFileName, string destinationDirectoryName, System.Text.Encoding entryNameEncoding);
public static void ExtractToDirectory(string sourceArchiveFileName, string destinationDirectoryName, System.Text.Encoding? entryNameEncoding);
static member ExtractToDirectory : string * string * System.Text.Encoding -> unit
Public Shared Sub ExtractToDirectory (sourceArchiveFileName As String, destinationDirectoryName As String, entryNameEncoding As Encoding)

Параметры

sourceArchiveFileName
String

Путь к архиву, который необходимо извлечь.

destinationDirectoryName
String

Путь к каталогу, в котором будут размещаться извлеченные файлы, указанные как относительный или абсолютный путь. Относительный путь интерпретируется как относительный к текущему рабочему каталогу.

entryNameEncoding
Encoding

Кодировка, используемая при чтении или записи имен и комментариев в этом архиве. Укажите значение этого параметра, только если кодировка требуется для взаимодействия с средствами и библиотеками ZIP-архива, которые не поддерживают кодировку UTF-8 для имен записей или комментариев.

Исключения

значение > содержит только пробелы или содержит по крайней мере один недопустимый символ.

–или–

entryNameEncoding для кодировки Юникода, отличной от UTF-8.

destinationDirectoryName или sourceArchiveFileName есть null.

Указанный путь в destinationDirectoryName системе или sourceArchiveFileName превышает заданную системой максимальную длину.

Указанный путь недопустим (например, он находится на несопоставленном диске).

Имя записи в архиве Empty: содержит только пробелы или содержит по крайней мере один недопустимый символ.

–или–

Извлечение записи архива создаст файл, который находится за пределами каталога, указанного в destinationDirectoryNameфайле. (Например, это может произойти, если имя записи содержит родительские методы доступа к каталогу.)

–или–

Запись архива для извлечения имеет то же имя, что и запись, которая уже извлечена или существует в destinationDirectoryName.

Вызывающий объект не имеет требуемого разрешения для доступа к архиву или целевому каталогу.

destinationDirectoryName или sourceArchiveFileName содержит недопустимый формат.

sourceArchiveFileName не найден.

Архив, указанный sourceArchiveFileName не является допустимым zip-архивом.

–или–

Архивная запись не найдена или повреждена.

–или–

Запись архива была сжата с помощью метода сжатия, который не поддерживается.

Комментарии

При необходимости этот метод создает указанный каталог и все вложенные каталоги. Исключения, связанные с проверкой путей в destinationDirectoryName или sourceArchiveFileName параметрах, создаются перед извлечением. В противном случае, если во время извлечения возникает ошибка, архив остается частично извлеченным. Каждый извлеченный файл имеет тот же относительный путь к каталогу, указанному destinationDirectoryName в качестве исходной записи, имеет корень архива.

Если запись в ZIP-архиве является символьной ссылкой, она извлекается как обычная папка, так как сведения о символьной ссылке не сохраняются в формате ZIP. Если destinationDirectoryName или любой из его родительских каталогов является предварительно существующим соединением или символьной ссылкой, ссылка выполняется и извлечение записывается в окончательную целевую папку.

Если entryNameEncoding задано значение, отличное nullот имени записи и примечаний, декодируются в соответствии со следующими правилами:

  • Для записей, в которых флаг кодировки языка (в флаге кодирования общего назначения заголовка локального файла) не задано, имена записей и примечания декодируются с помощью указанной кодировки.
  • Для записей, в которых задан флаг кодировки языка, имена и примечания записей декодируются с помощью UTF-8.

Если entryNameEncoding задано значение null, имена и комментарии записей декодируются в соответствии со следующими правилами:

  • Для записей, в которых флаг кодировки языка (в флаге общего назначения заголовка локального файла) не задано, имена записей и примечания декодируются с помощью текущей кодовой страницы по умолчанию системы.
  • Для записей, в которых задан флаг кодировки языка, имена и примечания записей декодируются с помощью UTF-8.

Предупреждение

Этот метод не ограничивает общий несжатый размер или количество записей, извлеченных из архива. При обработке архивов из ненадежных источников выполните итерацию записей вручную с помощью ZipArchiveи убедитесь, что общий несжатый размер и количество записей находятся в допустимых ограничениях для вашего сценария.

Применяется к

ExtractToDirectory(String, String, Boolean)

Исходный код:
ZipFile.Extract.cs
Исходный код:
ZipFile.Extract.cs
Исходный код:
ZipFile.Extract.cs
Исходный код:
ZipFile.Extract.cs
Исходный код:
ZipFile.Extract.cs

Извлекает все файлы в указанном архиве в каталог файловой системы.

public:
 static void ExtractToDirectory(System::String ^ sourceArchiveFileName, System::String ^ destinationDirectoryName, bool overwriteFiles);
public static void ExtractToDirectory(string sourceArchiveFileName, string destinationDirectoryName, bool overwriteFiles);
static member ExtractToDirectory : string * string * bool -> unit
Public Shared Sub ExtractToDirectory (sourceArchiveFileName As String, destinationDirectoryName As String, overwriteFiles As Boolean)

Параметры

sourceArchiveFileName
String

Путь к файловой системе в архив, который необходимо извлечь.

destinationDirectoryName
String

Путь к целевому каталогу в файловой системе.

overwriteFiles
Boolean

true для перезаписи файлов; false Иначе.

Исключения

sourceArchiveFileName или destinationDirectoryName строка нулевой длины, содержит только пробелы или содержит один или несколько недопустимых символов, как определено InvalidPathChars.

sourceArchiveFileName или destinationDirectoryName есть null.

sourceArchiveFileName или destinationDirectoryName задает путь, имя файла или оба значения, превышающие определенную системой максимальную длину.

Путь, указанный sourceArchiveFileName или destinationDirectoryName недопустимый (например, он находится на несопоставленном диске).

overwriteFiles имеет false и уже содержит файл с тем же именем, что и destinationDirectoryName извлеченный файл.

–или–

Произошла ошибка ввода-вывода.

–или–

Имя нулевой ZipArchiveEntry длины, содержит только пробелы или содержит один или несколько недопустимых символов, как определено InvalidPathChars.

–или–

ZipArchiveEntry Извлечение приведет к назначению файла, который находится за пределами целевого каталога (например, из-за родительских методов доступа к каталогу).

–или–

Имя ZipArchiveEntry имеет то же имя, что и запись из того же архива, который уже извлечен.

Вызывающий объект не имеет требуемого разрешения.

sourceArchiveFileName или destinationDirectoryName находится в недопустимом формате.

sourceArchiveFileName не найден.

Архив, указанный sourceArchiveFileName не является допустимым ZipArchive.

–или–

Не ZipArchiveEntry найден или поврежден.

–или–

A ZipArchiveEntry был сжатым с помощью метода сжатия, который не поддерживается.

Комментарии

Если при извлечении архива возникает ошибка, архив останется частично извлеченным.

Каждая запись будет извлечена таким образом, что извлеченный файл имеет тот же относительный путь к destinationDirectoryName архиву, что и запись.

destinationDirectoryName Параметры sourceArchiveFileName принимают относительные и абсолютные пути. Относительный путь интерпретируется как относительный к текущему рабочему каталогу.

Если запись в ZIP-архиве является символьной ссылкой, она извлекается как обычная папка, так как сведения о символьной ссылке не сохраняются в формате ZIP. Если destinationDirectoryName или любой из его родительских каталогов является предварительно существующим соединением или символьной ссылкой, ссылка выполняется и извлечение записывается в окончательную целевую папку.

Если архивируемый файл имеет недопустимое время последнего изменения, будет использоваться первая дата и время, представляющееся в формате zip-метки времени (полночь 1 января 1980 г.).

Предупреждение

Этот метод не ограничивает общий несжатый размер или количество записей, извлеченных из архива. При обработке архивов из ненадежных источников выполните итерацию записей вручную с помощью ZipArchiveи убедитесь, что общий несжатый размер и количество записей находятся в допустимых ограничениях для вашего сценария.

Применяется к

ExtractToDirectory(Stream, String, Boolean)

Исходный код:
ZipFile.Extract.cs
Исходный код:
ZipFile.Extract.cs
Исходный код:
ZipFile.Extract.cs
Исходный код:
ZipFile.Extract.cs

Извлекает все файлы из ZIP-архива, хранящегося в указанном потоке, и помещает их в указанный целевой каталог в файловой системе, и при необходимости позволяет выбрать, следует ли перезаписывать файлы в целевом каталоге.

public:
 static void ExtractToDirectory(System::IO::Stream ^ source, System::String ^ destinationDirectoryName, bool overwriteFiles);
public static void ExtractToDirectory(System.IO.Stream source, string destinationDirectoryName, bool overwriteFiles);
static member ExtractToDirectory : System.IO.Stream * string * bool -> unit
Public Shared Sub ExtractToDirectory (source As Stream, destinationDirectoryName As String, overwriteFiles As Boolean)

Параметры

source
Stream

Поток, из которого извлекается ZIP-архив.

destinationDirectoryName
String

Путь к каталогу, в котором будут размещаться извлеченные файлы, указанные как относительный или абсолютный путь. Относительный путь интерпретируется как относительный к текущему рабочему каталогу.

overwriteFiles
Boolean

true для перезаписи файлов; false Иначе.

Исключения

destinationDirectoryName is Empty, содержит только пробелы или содержит по крайней мере один недопустимый символ.

destinationDirectoryName или source есть null.

Указанный путь превышает destinationDirectoryName заданную системой максимальную длину.

Указанный путь недопустим (например, он находится на несопоставленном диске).

Имя записи в архиве Empty: содержит только пробелы или содержит по крайней мере один недопустимый символ.

–или–

Извлечение записи архива создаст файл, который находится за пределами каталога, указанного в destinationDirectoryNameфайле. (Например, это может произойти, если имя записи содержит родительские методы доступа к каталогу.)

–или–

overwriteFilesfalse и архивная запись для извлечения имеет то же имя, что и запись, которая уже извлечена или в ней существует destinationDirectoryName.

Вызывающий объект не имеет требуемого разрешения для доступа к архиву или целевому каталогу.

destinationDirectoryName содержит недопустимый формат.

Архив, содержащийся в потоке source , не является допустимым ZIP-архивом.

–или–

Архивная запись не найдена или повреждена.

–или–

Запись архива была сжата с помощью метода сжатия, который не поддерживается.

Комментарии

Этот метод создает указанный каталог и все вложенные каталоги. Целевой каталог не может существовать. Исключения, связанные с проверкой путей в destinationDirectoryName zip-архиве или файлами, содержащимися в source параметрах, создаются перед извлечением. В противном случае, если во время извлечения возникает ошибка, архив остается частично извлеченным. Каждый извлеченный файл имеет тот же относительный путь к каталогу, указанному destinationDirectoryName в качестве исходной записи, имеет корень архива.

Если запись в ZIP-архиве является символьной ссылкой, она извлекается как обычная папка, так как сведения о символьной ссылке не сохраняются в формате ZIP. Если destinationDirectoryName или любой из его родительских каталогов является предварительно существующим соединением или символьной ссылкой, ссылка выполняется и извлечение записывается в окончательную целевую папку.

Если архивируемый файл имеет недопустимое время последнего изменения, будет использоваться первая дата и время, представляющееся в формате zip-метки времени (полночь 1 января 1980 г.).

Предупреждение

Этот метод не ограничивает общий несжатый размер или количество записей, извлеченных из архива. При обработке архивов из ненадежных источников выполните итерацию записей вручную с помощью ZipArchiveи убедитесь, что общий несжатый размер и количество записей находятся в допустимых ограничениях для вашего сценария.

Применяется к

ExtractToDirectory(String, String)

Исходный код:
ZipFile.Extract.cs
Исходный код:
ZipFile.Extract.cs
Исходный код:
ZipFile.Extract.cs
Исходный код:
ZipFile.Extract.cs
Исходный код:
ZipFile.Extract.cs

Извлекает все файлы в указанном ZIP-архиве в каталог файловой системы.

public:
 static void ExtractToDirectory(System::String ^ sourceArchiveFileName, System::String ^ destinationDirectoryName);
public static void ExtractToDirectory(string sourceArchiveFileName, string destinationDirectoryName);
static member ExtractToDirectory : string * string -> unit
Public Shared Sub ExtractToDirectory (sourceArchiveFileName As String, destinationDirectoryName As String)

Параметры

sourceArchiveFileName
String

Путь к архиву, который необходимо извлечь.

destinationDirectoryName
String

Путь к каталогу, в котором будут размещаться извлеченные файлы, указанные как относительный или абсолютный путь. Относительный путь интерпретируется как относительный к текущему рабочему каталогу.

Исключения

значение > содержит только пробелы или содержит по крайней мере один недопустимый символ.

destinationDirectoryName или sourceArchiveFileName есть null.

Указанный путь в destinationDirectoryName системе или sourceArchiveFileName превышает заданную системой максимальную длину.

Указанный путь недопустим (например, он находится на несопоставленном диске).

Имя записи в архиве Empty: содержит только пробелы или содержит по крайней мере один недопустимый символ.

–или–

Извлечение записи архива создаст файл, который находится за пределами каталога, указанного в destinationDirectoryNameфайле. (Например, это может произойти, если имя записи содержит родительские методы доступа к каталогу.)

–или–

Запись архива для извлечения имеет то же имя, что и запись, которая уже извлечена или существует в destinationDirectoryName.

Вызывающий объект не имеет требуемого разрешения для доступа к архиву или целевому каталогу.

destinationDirectoryName или sourceArchiveFileName содержит недопустимый формат.

sourceArchiveFileName не найден.

Архив, указанный sourceArchiveFileName не является допустимым zip-архивом.

–или–

Архивная запись не найдена или повреждена.

–или–

Запись архива была сжата с помощью метода сжатия, который не поддерживается.

Примеры

В этом примере показано, как создать и извлечь ZIP-архив с помощью ZipFile класса. Он сжимает содержимое папки в ZIP-архив и извлекает содержимое в новую папку. Чтобы использовать ZipFile класс, необходимо ссылаться на сборку System.IO.Compression.FileSystem в проекте.

using System;
using System.IO.Compression;

class Program
{
    static void Main(string[] args)
    {
        string startPath = @".\start";
        string zipPath = @".\result.zip";
        string extractPath = @".\extract";

        ZipFile.CreateFromDirectory(startPath, zipPath);

        ZipFile.ExtractToDirectory(zipPath, extractPath);
    }
}
open System.IO.Compression

let startPath = @".\start"
let zipPath = @".\result.zip"
let extractPath = @".\extract"

ZipFile.CreateFromDirectory(startPath, zipPath)

ZipFile.ExtractToDirectory(zipPath, extractPath)
Imports System.IO.Compression

Module Module1

    Sub Main()
        Dim startPath As String = ".\start"
        Dim zipPath As String = ".\result.zip"
        Dim extractPath As String = ".\extract"

        ZipFile.CreateFromDirectory(startPath, zipPath)

        ZipFile.ExtractToDirectory(zipPath, extractPath)
    End Sub

End Module

Комментарии

Этот метод создает указанный каталог и все вложенные каталоги. Целевой каталог не может существовать. Исключения, связанные с проверкой путей в destinationDirectoryName или sourceArchiveFileName параметрах, создаются перед извлечением. В противном случае, если во время извлечения возникает ошибка, архив остается частично извлеченным. Каждый извлеченный файл имеет тот же относительный путь к каталогу, указанному destinationDirectoryName в качестве исходной записи, имеет корень архива.

Если запись в ZIP-архиве является символьной ссылкой, она извлекается как обычная папка, так как сведения о символьной ссылке не сохраняются в формате ZIP. Если destinationDirectoryName или любой из его родительских каталогов является предварительно существующим соединением или символьной ссылкой, ссылка выполняется и извлечение записывается в окончательную целевую папку.

Предупреждение

Этот метод не ограничивает общий несжатый размер или количество записей, извлеченных из архива. При обработке архивов из ненадежных источников выполните итерацию записей вручную с помощью ZipArchiveи убедитесь, что общий несжатый размер и количество записей находятся в допустимых ограничениях для вашего сценария.

Применяется к

ExtractToDirectory(Stream, String)

Исходный код:
ZipFile.Extract.cs
Исходный код:
ZipFile.Extract.cs
Исходный код:
ZipFile.Extract.cs
Исходный код:
ZipFile.Extract.cs

Извлекает все файлы из ZIP-архива, хранящегося в указанном потоке, и помещает их в указанный целевой каталог в файловой системе.

public:
 static void ExtractToDirectory(System::IO::Stream ^ source, System::String ^ destinationDirectoryName);
public static void ExtractToDirectory(System.IO.Stream source, string destinationDirectoryName);
static member ExtractToDirectory : System.IO.Stream * string -> unit
Public Shared Sub ExtractToDirectory (source As Stream, destinationDirectoryName As String)

Параметры

source
Stream

Поток, из которого извлекается ZIP-архив.

destinationDirectoryName
String

Путь к каталогу, в котором будут размещаться извлеченные файлы, указанные как относительный или абсолютный путь. Относительный путь интерпретируется как относительный к текущему рабочему каталогу.

Исключения

destinationDirectoryName is Empty, содержит только пробелы или содержит по крайней мере один недопустимый символ.

destinationDirectoryName или source есть null.

Указанный путь превышает destinationDirectoryName заданную системой максимальную длину.

Указанный путь недопустим (например, он находится на несопоставленном диске).

Имя записи в архиве Empty: содержит только пробелы или содержит по крайней мере один недопустимый символ.

–или–

Извлечение записи архива создаст файл, который находится за пределами каталога, указанного в destinationDirectoryNameфайле. (Например, это может произойти, если имя записи содержит родительские методы доступа к каталогу.)

–или–

Запись архива для извлечения имеет то же имя, что и запись, которая уже извлечена или существует в destinationDirectoryName.

Вызывающий объект не имеет требуемого разрешения для доступа к архиву или целевому каталогу.

destinationDirectoryName содержит недопустимый формат.

Архив, содержащийся в потоке source , не является допустимым ZIP-архивом.

–или–

Архивная запись не найдена или повреждена.

–или–

Запись архива была сжата с помощью метода сжатия, который не поддерживается.

Комментарии

Этот метод создает указанный каталог и все вложенные каталоги. Целевой каталог не может существовать. Исключения, связанные с проверкой путей в destinationDirectoryName zip-архиве или файлами, содержащимися в source параметрах, создаются перед извлечением. В противном случае, если во время извлечения возникает ошибка, архив остается частично извлеченным. Каждый извлеченный файл имеет тот же относительный путь к каталогу, указанному destinationDirectoryName в качестве исходной записи, имеет корень архива.

Если запись в ZIP-архиве является символьной ссылкой, она извлекается как обычная папка, так как сведения о символьной ссылке не сохраняются в формате ZIP. Если destinationDirectoryName или любой из его родительских каталогов является предварительно существующим соединением или символьной ссылкой, ссылка выполняется и извлечение записывается в окончательную целевую папку.

Если архивируемый файл имеет недопустимое время последнего изменения, будет использоваться первая дата и время, представляющееся в формате zip-метки времени (полночь 1 января 1980 г.).

Предупреждение

Этот метод не ограничивает общий несжатый размер или количество записей, извлеченных из архива. При обработке архивов из ненадежных источников выполните итерацию записей вручную с помощью ZipArchiveи убедитесь, что общий несжатый размер и количество записей находятся в допустимых ограничениях для вашего сценария.

Применяется к

ExtractToDirectory(Stream, String, Encoding)

Исходный код:
ZipFile.Extract.cs
Исходный код:
ZipFile.Extract.cs
Исходный код:
ZipFile.Extract.cs
Исходный код:
ZipFile.Extract.cs

Извлекает все файлы из ZIP-архива, хранящегося в указанном потоке, и помещает их в указанный целевой каталог в файловой системе и использует указанную кодировку символов для имен и комментариев.

public:
 static void ExtractToDirectory(System::IO::Stream ^ source, System::String ^ destinationDirectoryName, System::Text::Encoding ^ entryNameEncoding);
public static void ExtractToDirectory(System.IO.Stream source, string destinationDirectoryName, System.Text.Encoding? entryNameEncoding);
static member ExtractToDirectory : System.IO.Stream * string * System.Text.Encoding -> unit
Public Shared Sub ExtractToDirectory (source As Stream, destinationDirectoryName As String, entryNameEncoding As Encoding)

Параметры

source
Stream

Поток, из которого извлекается ZIP-архив.

destinationDirectoryName
String

Путь к каталогу, в котором будут размещаться извлеченные файлы, указанные как относительный или абсолютный путь. Относительный путь интерпретируется как относительный к текущему рабочему каталогу.

entryNameEncoding
Encoding

Кодировка, используемая при чтении или записи имен и комментариев в этом архиве. Укажите значение этого параметра, только если кодировка требуется для взаимодействия с средствами и библиотеками ZIP-архива, которые не поддерживают кодировку UTF-8 для имен записей или комментариев.

Исключения

destinationDirectoryName is Empty, содержит только пробелы или содержит по крайней мере один недопустимый символ.

–или–

entryNameEncoding для кодировки Юникода, отличной от UTF-8.

destinationDirectoryName или source есть null.

Указанный путь превышает destinationDirectoryName заданную системой максимальную длину.

Указанный путь недопустим (например, он находится на несопоставленном диске).

Имя записи в архиве Empty: содержит только пробелы или содержит по крайней мере один недопустимый символ.

–или–

Извлечение записи архива создаст файл, который находится за пределами каталога, указанного в destinationDirectoryNameфайле. (Например, это может произойти, если имя записи содержит родительские методы доступа к каталогу.)

–или–

Запись архива для извлечения имеет то же имя, что и запись, которая уже извлечена или существует в destinationDirectoryName.

Вызывающий объект не имеет требуемого разрешения для доступа к архиву или целевому каталогу.

destinationDirectoryName содержит недопустимый формат.

Архив, содержащийся в потоке source , не является допустимым ZIP-архивом.

–или–

Архивная запись не найдена или повреждена.

–или–

Запись архива была сжата с помощью метода сжатия, который не поддерживается.

Комментарии

Этот метод создает указанный каталог и все вложенные каталоги. Целевой каталог не может существовать. Исключения, связанные с проверкой путей в destinationDirectoryName zip-архиве или файлами, содержащимися в source параметрах, создаются перед извлечением. В противном случае, если во время извлечения возникает ошибка, архив остается частично извлеченным. Каждый извлеченный файл имеет тот же относительный путь к каталогу, указанному destinationDirectoryName в качестве исходной записи, имеет корень архива.

Если архивируемый файл имеет недопустимое время последнего изменения, будет использоваться первая дата и время, представляющееся в формате zip-метки времени (полночь 1 января 1980 г.).

Предупреждение

Этот метод не ограничивает общий несжатый размер или количество записей, извлеченных из архива. При обработке архивов из ненадежных источников выполните итерацию записей вручную с помощью ZipArchiveи убедитесь, что общий несжатый размер и количество записей находятся в допустимых ограничениях для вашего сценария.

Применяется к