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


ZipFile.CreateFromDirectory Метод

Определение

Создает ZIP архив, содержащий файлы и каталоги из указанного каталога.

Перегрузки

CreateFromDirectory(String, Stream)

Создает ZIP-архив в указанном потоке, который содержит файлы и каталоги из указанного каталога.

CreateFromDirectory(String, String)

Создает ZIP архив, содержащий файлы и каталоги из указанного каталога.

CreateFromDirectory(String, Stream, CompressionLevel, Boolean)

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

CreateFromDirectory(String, String, CompressionLevel, Boolean)

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

CreateFromDirectory(String, Stream, CompressionLevel, Boolean, Encoding)

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

CreateFromDirectory(String, String, CompressionLevel, Boolean, Encoding)

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

CreateFromDirectory(String, Stream)

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

Создает ZIP-архив в указанном потоке, который содержит файлы и каталоги из указанного каталога.

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

Параметры

sourceDirectoryName
String

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

destination
Stream

Поток, в котором должен храниться ZIP-архив.

Исключения

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

-или-

Поток destination не поддерживает запись.

Параметр sourceDirectoryName или destination имеет значение null.

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

Параметр sourceDirectoryName недопустим или не существует (например, он соответствует неподключенному диску).

Не удалось открыть файл в указанном каталоге.

-или-

При открытии архивного файла произошла ошибка ввода-вывода.

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

Комментарии

Структура каталогов из файловой системы сохраняется в архиве. Если каталог пуст, создается пустой архив. Эта перегрузка метода не включает базовый каталог в архив и не позволяет указать уровень сжатия. Если вы хотите включить базовый каталог или указать уровень сжатия, вызовите перегрузку CreateFromDirectory(String, Stream, CompressionLevel, Boolean) метода. Если файл в каталоге не удается добавить в архив, архив остается неполным и недопустимым, и метод создает IOException исключение.

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

CreateFromDirectory(String, String)

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

Создает ZIP архив, содержащий файлы и каталоги из указанного каталога.

public:
 static void CreateFromDirectory(System::String ^ sourceDirectoryName, System::String ^ destinationArchiveFileName);
public static void CreateFromDirectory (string sourceDirectoryName, string destinationArchiveFileName);
static member CreateFromDirectory : string * string -> unit
Public Shared Sub CreateFromDirectory (sourceDirectoryName As String, destinationArchiveFileName As String)

Параметры

sourceDirectoryName
String

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

destinationArchiveFileName
String

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

Исключения

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

Параметр sourceDirectoryName или destinationArchiveFileName имеет значение null.

ВsourceDirectoryName или destinationArchiveFileName длина указанного пути, имени файла или обоих параметров превышает установленное в системе максимальное значение.

Параметр sourceDirectoryName недопустим или не существует (например, он соответствует неподключенному диску).

destinationArchiveFileName уже существует.

-или-

Не удалось открыть файл в указанном каталоге.

-или-

При открытии архивного файла произошла ошибка ввода-вывода.

Параметр destinationArchiveFileName задает каталог.

-или-

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

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

-или-

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

Комментарии

Структура каталогов из файловой системы сохраняется в архиве. Если каталог пуст, создается пустой архив. Эта перегрузка метода не включает базовый каталог в архив и не позволяет указать уровень сжатия. Если вы хотите включить базовый каталог или указать уровень сжатия, вызовите перегрузку CreateFromDirectory(String, String, CompressionLevel, Boolean) метода.

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

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

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

CreateFromDirectory(String, Stream, CompressionLevel, Boolean)

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

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

public:
 static void CreateFromDirectory(System::String ^ sourceDirectoryName, System::IO::Stream ^ destination, System::IO::Compression::CompressionLevel compressionLevel, bool includeBaseDirectory);
public static void CreateFromDirectory (string sourceDirectoryName, System.IO.Stream destination, System.IO.Compression.CompressionLevel compressionLevel, bool includeBaseDirectory);
static member CreateFromDirectory : string * System.IO.Stream * System.IO.Compression.CompressionLevel * bool -> unit
Public Shared Sub CreateFromDirectory (sourceDirectoryName As String, destination As Stream, compressionLevel As CompressionLevel, includeBaseDirectory As Boolean)

Параметры

sourceDirectoryName
String

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

destination
Stream

Поток, в котором должен храниться ZIP-архив.

compressionLevel
CompressionLevel

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

includeBaseDirectory
Boolean

Значение true, чтобы включить имя каталога из параметра sourceDirectoryName в корень архива; значение false, чтобы включать только содержимое этого каталога.

Исключения

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

-или-

Поток destination не поддерживает запись.

Параметр sourceDirectoryName или destination имеет значение null.

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

Параметр sourceDirectoryName недопустим или не существует (например, он соответствует неподключенному диску).

Не удалось открыть файл в указанном каталоге.

-или-

При открытии архивного файла произошла ошибка ввода-вывода.

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

compressionLevel не является допустимым значением CompressionLevel.

Комментарии

Структура каталогов из файловой системы сохраняется в архиве. Если каталог пуст, создается пустой архив. Используйте эту перегрузку метода, чтобы указать уровень сжатия и указать, следует ли включать базовый каталог в архив. Если файл в каталоге не удается добавить в архив, архив остается неполным и недопустимым, и метод создает IOException исключение.

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

CreateFromDirectory(String, String, CompressionLevel, Boolean)

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

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

public:
 static void CreateFromDirectory(System::String ^ sourceDirectoryName, System::String ^ destinationArchiveFileName, System::IO::Compression::CompressionLevel compressionLevel, bool includeBaseDirectory);
public static void CreateFromDirectory (string sourceDirectoryName, string destinationArchiveFileName, System.IO.Compression.CompressionLevel compressionLevel, bool includeBaseDirectory);
static member CreateFromDirectory : string * string * System.IO.Compression.CompressionLevel * bool -> unit
Public Shared Sub CreateFromDirectory (sourceDirectoryName As String, destinationArchiveFileName As String, compressionLevel As CompressionLevel, includeBaseDirectory As Boolean)

Параметры

sourceDirectoryName
String

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

destinationArchiveFileName
String

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

compressionLevel
CompressionLevel

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

includeBaseDirectory
Boolean

Значение true, чтобы включить имя каталога из параметра sourceDirectoryName в корень архива; значение false, чтобы включать только содержимое этого каталога.

Исключения

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

Параметр sourceDirectoryName или destinationArchiveFileName имеет значение null.

ВsourceDirectoryName или destinationArchiveFileName длина указанного пути, имени файла или обоих параметров превышает установленное в системе максимальное значение.

Параметр sourceDirectoryName недопустим или не существует (например, он соответствует неподключенному диску).

destinationArchiveFileName уже существует.

-или-

Не удалось открыть файл в указанном каталоге.

-или-

При открытии архивного файла произошла ошибка ввода-вывода.

Параметр destinationArchiveFileName задает каталог.

-или-

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

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

-или-

ZIP-архив не поддерживает запись.

Примеры

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

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

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

            ZipFile.CreateFromDirectory(startPath, zipPath, CompressionLevel.Fastest, true);

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

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

ZipFile.CreateFromDirectory(startPath, zipPath, CompressionLevel.Fastest, true)

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

Module Module1

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

        ZipFile.CreateFromDirectory(startPath, zipPath, CompressionLevel.Fastest, True)

        ZipFile.ExtractToDirectory(zipPath, extractPath)
    End Sub

End Module

Комментарии

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

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

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

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

CreateFromDirectory(String, Stream, CompressionLevel, Boolean, Encoding)

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

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

public:
 static void CreateFromDirectory(System::String ^ sourceDirectoryName, System::IO::Stream ^ destination, System::IO::Compression::CompressionLevel compressionLevel, bool includeBaseDirectory, System::Text::Encoding ^ entryNameEncoding);
public static void CreateFromDirectory (string sourceDirectoryName, System.IO.Stream destination, System.IO.Compression.CompressionLevel compressionLevel, bool includeBaseDirectory, System.Text.Encoding? entryNameEncoding);
static member CreateFromDirectory : string * System.IO.Stream * System.IO.Compression.CompressionLevel * bool * System.Text.Encoding -> unit
Public Shared Sub CreateFromDirectory (sourceDirectoryName As String, destination As Stream, compressionLevel As CompressionLevel, includeBaseDirectory As Boolean, entryNameEncoding As Encoding)

Параметры

sourceDirectoryName
String

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

destination
Stream

Поток, в котором должен храниться ZIP-архив.

compressionLevel
CompressionLevel

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

includeBaseDirectory
Boolean

Значение true, чтобы включить имя каталога из параметра sourceDirectoryName в корень архива; значение false, чтобы включать только содержимое этого каталога.

entryNameEncoding
Encoding

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

Исключения

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

-или-

Поток destination не поддерживает запись.

Параметр sourceDirectoryName или destination имеет значение null.

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

Параметр sourceDirectoryName недопустим или не существует (например, он соответствует неподключенному диску).

Не удалось открыть файл в указанном каталоге.

-или-

При открытии архивного файла произошла ошибка ввода-вывода.

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

compressionLevel не является допустимым значением CompressionLevel.

Комментарии

Структура каталогов из файловой системы сохраняется в архиве. Если каталог пуст, создается пустой архив. Используйте эту перегрузку метода, чтобы указать уровень сжатия и кодировку символов, а также указать, следует ли включать базовый каталог в архив. Если файл в каталоге не удается добавить в архив, архив остается неполным и недопустимым, и метод создает IOException исключение.

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

CreateFromDirectory(String, String, CompressionLevel, Boolean, Encoding)

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

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

public:
 static void CreateFromDirectory(System::String ^ sourceDirectoryName, System::String ^ destinationArchiveFileName, System::IO::Compression::CompressionLevel compressionLevel, bool includeBaseDirectory, System::Text::Encoding ^ entryNameEncoding);
public static void CreateFromDirectory (string sourceDirectoryName, string destinationArchiveFileName, System.IO.Compression.CompressionLevel compressionLevel, bool includeBaseDirectory, System.Text.Encoding entryNameEncoding);
public static void CreateFromDirectory (string sourceDirectoryName, string destinationArchiveFileName, System.IO.Compression.CompressionLevel compressionLevel, bool includeBaseDirectory, System.Text.Encoding? entryNameEncoding);
static member CreateFromDirectory : string * string * System.IO.Compression.CompressionLevel * bool * System.Text.Encoding -> unit
Public Shared Sub CreateFromDirectory (sourceDirectoryName As String, destinationArchiveFileName As String, compressionLevel As CompressionLevel, includeBaseDirectory As Boolean, entryNameEncoding As Encoding)

Параметры

sourceDirectoryName
String

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

destinationArchiveFileName
String

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

compressionLevel
CompressionLevel

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

includeBaseDirectory
Boolean

Значение true, чтобы включить имя каталога из параметра sourceDirectoryName в корень архива; значение false, чтобы включать только содержимое этого каталога.

entryNameEncoding
Encoding

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

Исключения

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

-или-

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

Параметр sourceDirectoryName или destinationArchiveFileName имеет значение null.

ВsourceDirectoryName или destinationArchiveFileName длина указанного пути, имени файла или обоих параметров превышает установленное в системе максимальное значение.

Параметр sourceDirectoryName недопустим или не существует (например, он соответствует неподключенному диску).

destinationArchiveFileName уже существует.

-или-

Не удалось открыть файл в указанном каталоге.

-или-

При открытии архивного файла произошла ошибка ввода-вывода.

Параметр destinationArchiveFileName задает каталог.

-или-

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

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

-или-

ZIP-архив не поддерживает запись.

Комментарии

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

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

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

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

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

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

  • Для имен записей, содержащих только символы ASCII, устанавливается флаг кодирования языка, а для кодирования имен записей используется текущая системная кодовая страница по умолчанию.

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