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)

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

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, является недопустимым (например, он ведет на несопоставленный диск).

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

-или-

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

-или-

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

-или-

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

-или-

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

У вызывающего объекта отсутствует необходимое разрешение.

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

Не удалось найти sourceArchiveFileName.

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

-или-

Не удалось найти запись архива или она была повреждена.

-или-

Запись архива была сжата с использованием неподдерживаемого метода сжатия.

Комментарии

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

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

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

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

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

ExtractToDirectory(Stream, String, Encoding, Boolean)

Извлекает все файлы из 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> имеет значение Empty, содержит только пробелы или содержит по крайней мере один недопустимый символ.

-или-

entryNameEncoding установлено на кодировку Юникода, отличное от UTF-8.

Параметр destinationDirectoryName или source имеет значение null.

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

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

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

-или-

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

-или-

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

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

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

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

-или-

Не удалось найти запись архива или она была повреждена.

-или-

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

Комментарии

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

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

ExtractToDirectory(String, String, Encoding)

Извлекает все файлы в указанном 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 для имен записей.

Исключения

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

-или-

entryNameEncoding установлено на кодировку Юникода, отличное от UTF-8.

Параметр destinationDirectoryName или sourceArchiveFileName имеет значение null.

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

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

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

-или-

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

-или-

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

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

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

Не удалось найти sourceArchiveFileName.

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

-или-

Не удалось найти запись архива или она была повреждена.

-или-

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

Комментарии

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

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

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

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

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

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

ExtractToDirectory(String, String, Boolean)

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

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 поврежден или не может быть найден.

-или-

ZipArchiveEntry сжат с помощью неподдерживаемого метода сжатия.

Комментарии

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

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

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

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

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

ExtractToDirectory(Stream, String, Boolean)

Извлекает все файлы из 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> имеет значение Empty, содержит только пробелы или содержит по крайней мере один недопустимый символ.

Параметр destinationDirectoryName или source имеет значение null.

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

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

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

-или-

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

-или-

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

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

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

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

-или-

Не удалось найти запись архива или она была повреждена.

-или-

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

Комментарии

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

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

ExtractToDirectory(String, String)

Извлекает все файлы в указанном 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 является Empty, содержит только пробелы или хотя бы один недопустимый символ.

Параметр 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 так как его исходная запись относится к корню архива.

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

ExtractToDirectory(Stream, String)

Извлекает все файлы из 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> имеет значение Empty, содержит только пробелы или содержит по крайней мере один недопустимый символ.

Параметр destinationDirectoryName или source имеет значение null.

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

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

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

-или-

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

-или-

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

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

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

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

-или-

Не удалось найти запись архива или она была повреждена.

-или-

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

Комментарии

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

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

ExtractToDirectory(Stream, String, Encoding)

Извлекает все файлы из 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> имеет значение Empty, содержит только пробелы или содержит по крайней мере один недопустимый символ.

-или-

entryNameEncoding установлено на кодировку Юникода, отличное от UTF-8.

Параметр destinationDirectoryName или source имеет значение null.

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

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

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

-или-

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

-или-

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

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

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

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

-или-

Не удалось найти запись архива или она была повреждена.

-или-

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

Комментарии

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

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