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


ZipFileExtensions.ExtractToDirectory Метод

Определение

Перегрузки

ExtractToDirectory(ZipArchive, String)

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

ExtractToDirectory(ZipArchive, String, Boolean)

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

ExtractToDirectory(ZipArchive, String)

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

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

public:
[System::Runtime::CompilerServices::Extension]
 static void ExtractToDirectory(System::IO::Compression::ZipArchive ^ source, System::String ^ destinationDirectoryName);
public static void ExtractToDirectory (this System.IO.Compression.ZipArchive source, string destinationDirectoryName);
static member ExtractToDirectory : System.IO.Compression.ZipArchive * string -> unit
<Extension()>
Public Sub ExtractToDirectory (source As ZipArchive, destinationDirectoryName As String)

Параметры

source
ZipArchive

ZIP-архив, из которого нужно извлечь файлы.

destinationDirectoryName
String

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

Исключения

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

destinationDirectoryName имеет значение null.

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

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

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

-или-

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

-или-

Две или несколько записей в архиве имеют одинаковые имена.

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

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

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

-или-

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

Примеры

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

using System;
using System.IO;
using System.IO.Compression;

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            string zipPath = @"c:\users\exampleuser\start.zip";
            string extractPath = @"c:\users\exampleuser\extract";
            string newFile = @"c:\users\exampleuser\NewFile.txt";

            using (ZipArchive archive = ZipFile.Open(zipPath, ZipArchiveMode.Update))
            {
                archive.CreateEntryFromFile(newFile, "NewEntry.txt");
                archive.ExtractToDirectory(extractPath);
            }
        }
    }
}
Imports System.IO
Imports System.IO.Compression

Module Module1

    Sub Main()
        Dim zipPath As String = "c:\users\exampleuser\end.zip"
        Dim extractPath As String = "c:\users\exampleuser\extract"
        Dim newFile As String = "c:\users\exampleuser\NewFile.txt"

        Using archive As ZipArchive = ZipFile.Open(zipPath, ZipArchiveMode.Update)
            archive.CreateEntryFromFile(newFile, "NewEntry.txt", CompressionLevel.Fastest)
            archive.ExtractToDirectory(extractPath)
        End Using
    End Sub

End Module

Комментарии

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

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

ExtractToDirectory(ZipArchive, String, Boolean)

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

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

public:
[System::Runtime::CompilerServices::Extension]
 static void ExtractToDirectory(System::IO::Compression::ZipArchive ^ source, System::String ^ destinationDirectoryName, bool overwriteFiles);
public static void ExtractToDirectory (this System.IO.Compression.ZipArchive source, string destinationDirectoryName, bool overwriteFiles);
static member ExtractToDirectory : System.IO.Compression.ZipArchive * string * bool -> unit
<Extension()>
Public Sub ExtractToDirectory (source As ZipArchive, destinationDirectoryName As String, overwriteFiles As Boolean)

Параметры

source
ZipArchive

Извлекаемый ZipArchive.

destinationDirectoryName
String

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

overwriteFiles
Boolean

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

Исключения

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

destinationArchiveFileName имеет значение null.

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

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

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

-или-

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

-или-

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

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

Параметр destinationArchiveFileName задан в недопустимом формате.

ZipArchiveEntry поврежден или не может быть найден.

-или-

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

Комментарии

Указанный каталог может уже существовать. При необходимости этот метод создает указанный каталог и все подкаталоги.

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

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

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

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