ZipFile.CreateFromDirectory Метод

Определение

Создает ZIP архив, содержащий файлы и каталоги из указанного каталога.Creates a zip archive that contains the files and directories from the specified directory.

Перегрузки

CreateFromDirectory(String, String)

Создает ZIP архив, содержащий файлы и каталоги из указанного каталога.Creates a zip archive that contains the files and directories from the specified directory.

CreateFromDirectory(String, String, CompressionLevel, Boolean)

Создает ZIP-архив, содержащий файлы и каталоги из указанного каталога, использует указанный уровень сжатия и необязательно включает базовый каталог.Creates a zip archive that contains the files and directories from the specified directory, uses the specified compression level, and optionally includes the base directory.

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

Создает ZIP-архив, содержащий файлы и каталоги из указанного каталога, использует указанный уровень сжатия и кодировку символов для имен записей и необязательно включает базовый каталог.Creates a zip archive that contains the files and directories from the specified directory, uses the specified compression level and character encoding for entry names, and optionally includes the base directory.

CreateFromDirectory(String, String)

Создает ZIP архив, содержащий файлы и каталоги из указанного каталога.Creates a zip archive that contains the files and directories from the specified directory.

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

Путь к архивируемому каталогу, заданный как относительный или абсолютный путь.The path to the directory to be archived, specified as a relative or absolute path. Относительный путь интерпретируется относительно текущего рабочего каталога.A relative path is interpreted as relative to the current working directory.

destinationArchiveFileName
String

Путь создаваемого архива, заданный как относительный или абсолютный путь.The path of the archive to be created, specified as a relative or absolute path. Относительный путь интерпретируется относительно текущего рабочего каталога.A relative path is interpreted as relative to the current working directory.

Исключения

Параметр sourceDirectoryName или destinationArchiveFileName является Empty, содержит только пробелы или хотя бы один недопустимый символ.sourceDirectoryName or destinationArchiveFileName is Empty, contains only white space, or contains at least one invalid character.

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

ВsourceDirectoryName или destinationArchiveFileName длина указанного пути, имени файла или обоих параметров превышает установленное в системе максимальное значение.In sourceDirectoryName or destinationArchiveFileName, the specified path, file name, or both exceed the system-defined maximum length.

Параметр sourceDirectoryName недопустим или не существует (например, он соответствует неподключенному диску).sourceDirectoryName is invalid or does not exist (for example, it is on an unmapped drive).

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

- или --or- Не удалось открыть файл в указанном каталоге.A file in the specified directory could not be opened.

Параметр destinationArchiveFileName указывает каталог.destinationArchiveFileName specifies a directory.

- или --or- Вызывающий код не имеет необходимого разрешения на доступ к каталогу, указанному в sourceDirectoryName, или к файлу, указанному в destinationArchiveFileName.The caller does not have the required permission to access the directory specified in sourceDirectoryName or the file specified in destinationArchiveFileName.

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

-или--or- ZIP-архив не поддерживает запись.The zip archive does not support writing.

Примеры

В этом примере показано, как создать и извлечь ZIP-архив с помощью ZipFile класса.This example shows how to create and extract a zip archive by using the ZipFile class. Он сжимает содержимое папки в ZIP-архив, а затем извлекает это содержимое в новую папку.It compresses the contents of a folder into a zip archive, and then extracts that content to a new folder. Чтобы использовать класс ZipFile, укажите в проекте ссылку на сборку System.IO.Compression.FileSystem.To use the ZipFile class, you must reference the System.IO.Compression.FileSystem assembly in your project.

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);
    }
}
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

Комментарии

Структура каталогов из файловой системы сохраняется в архиве.The directory structure from the file system is preserved in the archive. Если каталог пуст, создается пустой архив.If the directory is empty, an empty archive is created. Эта перегрузка метода не включает базовый каталог в архив и не позволяет указать уровень сжатия.This method overload does not include the base directory in the archive and does not allow you to specify a compression level. Если необходимо включить базовый каталог или указать уровень сжатия, вызовите CreateFromDirectory(String, String, CompressionLevel, Boolean) перегрузку метода.If you want to include the base directory or specify a compression level, call the CreateFromDirectory(String, String, CompressionLevel, Boolean) method overload.

Если архив уже существует, IOException возникает исключение.If the archive already exists, an IOException exception is thrown. Если запись с указанным именем уже существует в архиве, то создается вторая запись с идентичным именем.If an entry with the specified name already exists in the archive, a second entry is created with an identical name.

Если файл в каталоге не может быть добавлен в архив, архив остается неполным и недопустимым, а метод создает IOException исключение.If a file in the directory cannot be added to the archive, the archive is left incomplete and invalid, and the method throws an IOException exception.

CreateFromDirectory(String, String, CompressionLevel, Boolean)

Создает ZIP-архив, содержащий файлы и каталоги из указанного каталога, использует указанный уровень сжатия и необязательно включает базовый каталог.Creates a zip archive that contains the files and directories from the specified directory, uses the specified compression level, and optionally includes the base directory.

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

Параметры

sourceDirectoryName
String

Путь к архивируемому каталогу, заданный как относительный или абсолютный путь.The path to the directory to be archived, specified as a relative or absolute path. Относительный путь интерпретируется относительно текущего рабочего каталога.A relative path is interpreted as relative to the current working directory.

destinationArchiveFileName
String

Путь создаваемого архива, заданный как относительный или абсолютный путь.The path of the archive to be created, specified as a relative or absolute path. Относительный путь интерпретируется относительно текущего рабочего каталога.A relative path is interpreted as relative to the current working directory.

compressionLevel
CompressionLevel

Одно из значений перечисления, указывающее, акцентировать ли внимание на скорости или эффективности сжатия при создании записи.One of the enumeration values that indicates whether to emphasize speed or compression effectiveness when creating the entry.

includeBaseDirectory
Boolean

Значение true, чтобы включить имя каталога из параметра sourceDirectoryName в корень архива; значение false, чтобы включать только содержимое этого каталога.true to include the directory name from sourceDirectoryName at the root of the archive; false to include only the contents of the directory.

Исключения

Параметр sourceDirectoryName или destinationArchiveFileName является Empty, содержит только пробелы или хотя бы один недопустимый символ.sourceDirectoryName or destinationArchiveFileName is Empty, contains only white space, or contains at least one invalid character.

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

ВsourceDirectoryName или destinationArchiveFileName длина указанного пути, имени файла или обоих параметров превышает установленное в системе максимальное значение.In sourceDirectoryName or destinationArchiveFileName, the specified path, file name, or both exceed the system-defined maximum length.

Параметр sourceDirectoryName недопустим или не существует (например, он соответствует неподключенному диску).sourceDirectoryName is invalid or does not exist (for example, it is on an unmapped drive).

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

- или --or- Не удалось открыть файл в указанном каталоге.A file in the specified directory could not be opened.

Параметр destinationArchiveFileName указывает каталог.destinationArchiveFileName specifies a directory.

- или --or- Вызывающий код не имеет необходимого разрешения на доступ к каталогу, указанному в sourceDirectoryName, или к файлу, указанному в destinationArchiveFileName.The caller does not have the required permission to access the directory specified in sourceDirectoryName or the file specified in destinationArchiveFileName.

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

- или --or- ZIP-архив не поддерживает запись.The zip archive does not support writing.

Примеры

В этом примере показано, как создать и извлечь ZIP-архив с помощью ZipFile класса.This example shows how to create and extract a zip archive by using the ZipFile class. Он сжимает содержимое папки в ZIP-архив, а затем извлекает это содержимое в новую папку.It compresses the contents of a folder into a zip archive, and then extracts that content to a new folder. При сжатии архива включается базовый каталог, а уровень сжатия устанавливается, чтобы подчеркнуть скорость операции.When compressing the archive, the base directory is included and the compression level is set to emphasize the speed of the operation over efficiency. Чтобы использовать класс ZipFile, укажите в проекте ссылку на сборку System.IO.Compression.FileSystem.To use the ZipFile class, you must reference the System.IO.Compression.FileSystem assembly in your project.

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);
        }
    }
}
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

Комментарии

Структура каталогов из файловой системы сохраняется в архиве.The directory structure from the file system is preserved in the archive. Если каталог пуст, создается пустой архив.If the directory is empty, an empty archive is created. Используйте эту перегрузку метода, чтобы задать уровень сжатия и указать, следует ли включать базовый каталог в архив.Use this method overload to specify the compression level and whether to include the base directory in the archive.

Если архив уже существует, IOException возникает исключение.If the archive already exists, an IOException exception is thrown. Если запись с указанным именем уже существует в архиве, то создается вторая запись с идентичным именем.If an entry with the specified name already exists in the archive, a second entry is created with an identical name.

Если файл в каталоге не может быть добавлен в архив, архив остается неполным и недопустимым, а метод создает IOException исключение.If a file in the directory cannot be added to the archive, the archive is left incomplete and invalid, and the method throws an IOException exception.

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

Создает ZIP-архив, содержащий файлы и каталоги из указанного каталога, использует указанный уровень сжатия и кодировку символов для имен записей и необязательно включает базовый каталог.Creates a zip archive that contains the files and directories from the specified directory, uses the specified compression level and character encoding for entry names, and optionally includes the base directory.

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);
static member CreateFromDirectory : string * string * System.IO.Compression.CompressionLevel * bool * System.Text.Encoding -> unit

Параметры

sourceDirectoryName
String

Путь к архивируемому каталогу, заданный как относительный или абсолютный путь.The path to the directory to be archived, specified as a relative or absolute path. Относительный путь интерпретируется относительно текущего рабочего каталога.A relative path is interpreted as relative to the current working directory.

destinationArchiveFileName
String

Путь создаваемого архива, заданный как относительный или абсолютный путь.The path of the archive to be created, specified as a relative or absolute path. Относительный путь интерпретируется относительно текущего рабочего каталога.A relative path is interpreted as relative to the current working directory.

compressionLevel
CompressionLevel

Одно из значений перечисления, указывающее, акцентировать ли внимание на скорости или эффективности сжатия при создании записи.One of the enumeration values that indicates whether to emphasize speed or compression effectiveness when creating the entry.

includeBaseDirectory
Boolean

Значение true, чтобы включить имя каталога из параметра sourceDirectoryName в корень архива; значение false, чтобы включать только содержимое этого каталога.true to include the directory name from sourceDirectoryName at the root of the archive; false to include only the contents of the directory.

entryNameEncoding
Encoding

Кодирование, используемое при чтении или записи имен записей в этом архиве.The encoding to use when reading or writing entry names in this archive. Задайте значение для этого параметра, только если кодирование требуется для взаимодействия с инструментами и библиотеками ZIP-архива, которые не поддерживают кодирование UTF-8 для имен записей.Specify a value for this parameter only when an encoding is required for interoperability with zip archive tools and libraries that do not support UTF-8 encoding for entry names.

Исключения

Параметр sourceDirectoryName или destinationArchiveFileName является Empty, содержит только пробелы или хотя бы один недопустимый символ.sourceDirectoryName or destinationArchiveFileName is Empty, contains only white space, or contains at least one invalid character.

- или --or- entryNameEncoding установлено на кодировку Юникода, отличное от UTF-8.entryNameEncoding is set to a Unicode encoding other than UTF-8.

Значение параметра sourceDirectoryName или destinationArchiveFileNamenull.sourceDirectoryName or destinationArchiveFileName is null.

ВsourceDirectoryName или destinationArchiveFileName длина указанного пути, имени файла или обоих параметров превышает установленное в системе максимальное значение.In sourceDirectoryName or destinationArchiveFileName, the specified path, file name, or both exceed the system-defined maximum length.

Параметр sourceDirectoryName недопустим или не существует (например, он соответствует неподключенному диску).sourceDirectoryName is invalid or does not exist (for example, it is on an unmapped drive).

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

-или--or- Не удалось открыть файл в указанном каталоге.A file in the specified directory could not be opened.

Параметр destinationArchiveFileName указывает каталог.destinationArchiveFileName specifies a directory.

- или --or- Вызывающий код не имеет необходимого разрешения на доступ к каталогу, указанному в sourceDirectoryName, или к файлу, указанному в destinationArchiveFileName.The caller does not have the required permission to access the directory specified in sourceDirectoryName or the file specified in destinationArchiveFileName.

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

-или--or- ZIP-архив не поддерживает запись.The zip archive does not support writing.

Комментарии

Структура каталогов из файловой системы сохраняется в архиве.The directory structure from the file system is preserved in the archive. Если каталог пуст, создается пустой архив.If the directory is empty, an empty archive is created. Используйте эту перегрузку метода, чтобы задать уровень сжатия и кодировку символов, а также указать, следует ли включать базовый каталог в архив.Use this method overload to specify the compression level and character encoding, and whether to include the base directory in the archive.

Если архив уже существует, IOException возникает исключение.If the archive already exists, an IOException exception is thrown. Если запись с указанным именем уже существует в архиве, то создается вторая запись с идентичным именем.If an entry with the specified name already exists in the archive, a second entry is created with an identical name.

Если файл в каталоге не может быть добавлен в архив, архив остается неполным и недопустимым, а метод создает IOException исключение.If a file in the directory cannot be added to the archive, the archive is left incomplete and invalid, and the method throws an IOException exception.

Если entryNameEncoding для параметра задано значение, отличное nullот, имена записей кодируются с помощью указанной кодировки.If entryNameEncoding is set to a value other than null, the entry names are encoded by using the specified encoding. Если указанная кодировка является UTF-8, флаг кодировки языка (в битовом флаге общего назначения локального заголовка файла) задается для каждой записи.If the specified encoding is a UTF-8, the language encoding flag (in the general-purpose bit flag of the local file header) is set for each entry,

Если entryNameEncoding параметр имеет nullзначение, имена записей кодируются в соответствии со следующими правилами.If entryNameEncoding is set to null, the entry names are encoded according to the following rules:

  • Для имен записей, содержащих символы за пределами диапазона ASCII, устанавливается флаг кодировки языка, а для кодирования имени записи используется UTF-8.For entry names that contain characters outside the ASCII range, the language encoding flag is set, and UTF-8 is used to encode the entry name.

  • Для имен записей, содержащих только символы ASCII, установлен флаг кодировки языка, и текущая системная кодовая страница по умолчанию используется для кодирования имен записей.For entry names that contain only ASCII characters, the language encoding flag is set, and the current system default code page is used to encode the entry names.

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