ZipFile.CreateFromDirectoryAsync Метод

Определение

Перегрузки

Имя Описание
CreateFromDirectoryAsync(String, Stream, CancellationToken)

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

CreateFromDirectoryAsync(String, String, CancellationToken)

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

CreateFromDirectoryAsync(String, Stream, CompressionLevel, Boolean, CancellationToken)

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

CreateFromDirectoryAsync(String, String, CompressionLevel, Boolean, CancellationToken)

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

CreateFromDirectoryAsync(String, Stream, CompressionLevel, Boolean, Encoding, CancellationToken)

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

CreateFromDirectoryAsync(String, String, CompressionLevel, Boolean, Encoding, CancellationToken)

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

CreateFromDirectoryAsync(String, Stream, CancellationToken)

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

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

public static System.Threading.Tasks.Task CreateFromDirectoryAsync(string sourceDirectoryName, System.IO.Stream destination, System.Threading.CancellationToken cancellationToken = default);
static member CreateFromDirectoryAsync : string * System.IO.Stream * System.Threading.CancellationToken -> System.Threading.Tasks.Task
Public Shared Function CreateFromDirectoryAsync (sourceDirectoryName As String, destination As Stream, Optional cancellationToken As CancellationToken = Nothing) As Task

Параметры

sourceDirectoryName
String

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

destination
Stream

Поток, в котором хранится ZIP-архив.

cancellationToken
CancellationToken

Маркер отмены для отслеживания запросов на отмену.

Возвращаемое значение

Исключения

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

–или–

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

sourceDirectoryName или destination есть null.

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

sourceDirectoryName является недопустимым или не существует (например, он находится на несопоставленном диске).

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

–или–

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

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

Асинхронная операция отменена.

Комментарии

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

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

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

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

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

CreateFromDirectoryAsync(String, String, CancellationToken)

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

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

public static System.Threading.Tasks.Task CreateFromDirectoryAsync(string sourceDirectoryName, string destinationArchiveFileName, System.Threading.CancellationToken cancellationToken = default);
static member CreateFromDirectoryAsync : string * string * System.Threading.CancellationToken -> System.Threading.Tasks.Task
Public Shared Function CreateFromDirectoryAsync (sourceDirectoryName As String, destinationArchiveFileName As String, Optional cancellationToken As CancellationToken = Nothing) As Task

Параметры

sourceDirectoryName
String

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

destinationArchiveFileName
String

Имя создаваемого архива.

cancellationToken
CancellationToken

Маркер отмены для отслеживания запросов на отмену.

Возвращаемое значение

Исключения

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

sourceDirectoryName или destinationArchiveFileName есть null.

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

Например, на платформах под управлением Windows пути должны быть менее 248 символов, а имена файлов должны быть меньше 260 символов.

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

–или–

Каталог, указанный sourceDirectoryName не существует.

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

–или–

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

destinationArchiveFileName указан каталог.

–или–

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

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

Асинхронная операция отменена.

Комментарии

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

Если при добавлении файлов в архив возникает ошибка, этот метод останавливает добавление файлов и оставляет архив в недопустимом состоянии. Пути могут указывать относительные или абсолютные сведения о пути. Относительные сведения о пути интерпретируются как относительные к текущему рабочему каталогу. Если файл в архиве содержит данные в поле времени последней записи, которое не является допустимым zip-меткой времени, значение индикатора 1980 января 1 в полночь будет использоваться для последнего изменения файла. Если запись с указанным именем уже существует в архиве, создается вторая запись с идентичным именем. Так как параметр не CompressionLevel указан, используется значение по умолчанию, предоставленное реализацией базового алгоритма сжатия; ZipArchive он не будет применять собственный по умолчанию.

(В настоящее время базовый алгоритм сжатия предоставляется классом DeflateStream .)

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

CreateFromDirectoryAsync(String, Stream, CompressionLevel, Boolean, CancellationToken)

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

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

public static System.Threading.Tasks.Task CreateFromDirectoryAsync(string sourceDirectoryName, System.IO.Stream destination, System.IO.Compression.CompressionLevel compressionLevel, bool includeBaseDirectory, System.Threading.CancellationToken cancellationToken = default);
static member CreateFromDirectoryAsync : string * System.IO.Stream * System.IO.Compression.CompressionLevel * bool * System.Threading.CancellationToken -> System.Threading.Tasks.Task
Public Shared Function CreateFromDirectoryAsync (sourceDirectoryName As String, destination As Stream, compressionLevel As CompressionLevel, includeBaseDirectory As Boolean, Optional cancellationToken As CancellationToken = Nothing) As Task

Параметры

sourceDirectoryName
String

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

destination
Stream

Поток, в котором хранится ZIP-архив.

compressionLevel
CompressionLevel

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

includeBaseDirectory
Boolean

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

cancellationToken
CancellationToken

Маркер для отслеживания запросов на отмену.

Возвращаемое значение

Исключения

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

–или–

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

sourceDirectoryName или destination есть null.

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

sourceDirectoryName является недопустимым или не существует (например, он находится на несопоставленном диске).

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

–или–

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

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

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

Асинхронная операция отменена.

Комментарии

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

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

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

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

CreateFromDirectoryAsync(String, String, CompressionLevel, Boolean, CancellationToken)

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

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

public static System.Threading.Tasks.Task CreateFromDirectoryAsync(string sourceDirectoryName, string destinationArchiveFileName, System.IO.Compression.CompressionLevel compressionLevel, bool includeBaseDirectory, System.Threading.CancellationToken cancellationToken = default);
static member CreateFromDirectoryAsync : string * string * System.IO.Compression.CompressionLevel * bool * System.Threading.CancellationToken -> System.Threading.Tasks.Task
Public Shared Function CreateFromDirectoryAsync (sourceDirectoryName As String, destinationArchiveFileName As String, compressionLevel As CompressionLevel, includeBaseDirectory As Boolean, Optional cancellationToken As CancellationToken = Nothing) As Task

Параметры

sourceDirectoryName
String

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

destinationArchiveFileName
String

Имя создаваемого архива.

compressionLevel
CompressionLevel

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

includeBaseDirectory
Boolean

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

cancellationToken
CancellationToken

Маркер отмены для отслеживания запросов на отмену.

Возвращаемое значение

Исключения

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

sourceDirectoryName или destinationArchiveFileName есть null.

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

Например, на платформах под управлением Windows пути должны быть менее 248 символов, а имена файлов должны быть меньше 260 символов.

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

–или–

Каталог, указанный sourceDirectoryName не существует.

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

–или–

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

destinationArchiveFileName указан каталог.

–или–

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

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

Асинхронная операция отменена.

Комментарии

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

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

Если при добавлении файлов в архив возникает ошибка, этот метод перестанет добавлять файлы и покидать архив в недопустимом состоянии. Пути могут указывать относительные или абсолютные сведения о пути. Относительные сведения о пути интерпретируются как относительные к текущему рабочему каталогу. Если файл в архиве содержит данные в поле времени последней записи, которое не является допустимым zip-меткой времени, значение индикатора 1980 января 1 в полночь будет использоваться для последнего изменения файла. Если запись с указанным именем уже существует в архиве, вторая запись будет создана с идентичным именем. Так как не CompressionLevel указано, используется значение по умолчанию, предоставленное реализацией базового алгоритма сжатия.ZipArchive

(В настоящее время базовый алгоритм сжатия предоставляется классом DeflateStream .)

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

CreateFromDirectoryAsync(String, Stream, CompressionLevel, Boolean, Encoding, CancellationToken)

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

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

public static System.Threading.Tasks.Task CreateFromDirectoryAsync(string sourceDirectoryName, System.IO.Stream destination, System.IO.Compression.CompressionLevel compressionLevel, bool includeBaseDirectory, System.Text.Encoding? entryNameEncoding, System.Threading.CancellationToken cancellationToken = default);
static member CreateFromDirectoryAsync : string * System.IO.Stream * System.IO.Compression.CompressionLevel * bool * System.Text.Encoding * System.Threading.CancellationToken -> System.Threading.Tasks.Task
Public Shared Function CreateFromDirectoryAsync (sourceDirectoryName As String, destination As Stream, compressionLevel As CompressionLevel, includeBaseDirectory As Boolean, entryNameEncoding As Encoding, Optional cancellationToken As CancellationToken = Nothing) As Task

Параметры

sourceDirectoryName
String

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

destination
Stream

Поток, в котором хранится ZIP-архив.

compressionLevel
CompressionLevel

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

includeBaseDirectory
Boolean

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

entryNameEncoding
Encoding

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

cancellationToken
CancellationToken

Маркер отмены для отслеживания запросов на отмену.

Возвращаемое значение

Исключения

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

–или–

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

sourceDirectoryName или destination есть null.

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

sourceDirectoryName является недопустимым или не существует (например, он находится на несопоставленном диске).

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

–или–

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

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

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

Асинхронная операция отменена.

Комментарии

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

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

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

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

CreateFromDirectoryAsync(String, String, CompressionLevel, Boolean, Encoding, CancellationToken)

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

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

public static System.Threading.Tasks.Task CreateFromDirectoryAsync(string sourceDirectoryName, string destinationArchiveFileName, System.IO.Compression.CompressionLevel compressionLevel, bool includeBaseDirectory, System.Text.Encoding? entryNameEncoding, System.Threading.CancellationToken cancellationToken = default);
static member CreateFromDirectoryAsync : string * string * System.IO.Compression.CompressionLevel * bool * System.Text.Encoding * System.Threading.CancellationToken -> System.Threading.Tasks.Task
Public Shared Function CreateFromDirectoryAsync (sourceDirectoryName As String, destinationArchiveFileName As String, compressionLevel As CompressionLevel, includeBaseDirectory As Boolean, entryNameEncoding As Encoding, Optional cancellationToken As CancellationToken = Nothing) As Task

Параметры

sourceDirectoryName
String

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

destinationArchiveFileName
String

Имя создаваемого архива.

compressionLevel
CompressionLevel

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

includeBaseDirectory
Boolean

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

entryNameEncoding
Encoding

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

cancellationToken
CancellationToken

Маркер отмены для отслеживания запросов на отмену.

Возвращаемое значение

Исключения

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

sourceDirectoryName или destinationArchiveFileName есть null.

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

Например, на платформах под управлением Windows пути должны быть менее 248 символов, а имена файлов должны быть меньше 260 символов.

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

–или–

Каталог, указанный sourceDirectoryName не существует.

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

–или–

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

destinationArchiveFileName указан каталог.

–или–

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

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

Асинхронная операция отменена.

Комментарии

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

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

Если при добавлении файлов в архив возникает ошибка, этот метод перестанет добавлять файлы и покидать архив в недопустимом состоянии. Пути могут указывать относительные или абсолютные сведения о пути. Относительные сведения о пути интерпретируются как относительные к текущему рабочему каталогу. Если файл в архиве содержит данные в поле времени последней записи, которое не является допустимым zip-меткой времени, значение индикатора 1980 января 1 в полночь будет использоваться для последнего изменения файла. Если запись с указанным именем уже существует в архиве, вторая запись будет создана с идентичным именем. Так как не CompressionLevel указано, используется значение по умолчанию, предоставленное реализацией базового алгоритма сжатия.ZipArchive

(В настоящее время базовый алгоритм сжатия предоставляется классом DeflateStream .)

Указание значения, отличного null от entryNameEncoding не рекомендуется.

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

  • Если entryNameEncoding не указано (== null):
    • Для имен файлов или комментариев, содержащих символы за пределами диапазона ASCII:
      Флаг кодировки языка (EFS) будет задан в битовом флаге общего назначения заголовка локального файла соответствующей записи, а UTF-8 (Encoding.UTF8) будет использоваться для кодирования имени записи и комментариев в байтах.
    • Для имен файлов или комментариев, которые не содержат символов за пределами диапазона ASCII:
      Флаг кодировки языка (EFS) не будет задан в битовом флаге общего назначения заголовка локального файла соответствующей записи, а текущая системная кодовая страница по умолчанию (Encoding.Default) будет использоваться для кодирования имен записей и комментариев в байтах.
  • Если entryNameEncoding задано (!= null):
    • Указанные entryNameEncoding значения всегда будут использоваться для кодирования имен записей и комментариев в байтах.
      Флаг кодировки языка (EFS) в битовом флаге общего назначения заголовка локального файла для каждой записи будет задан, только если указано entryNameEncoding кодировка UTF-8.

Кодировки Юникода, отличные от UTF-8, нельзя использовать для entryNameEncodingнее, в противном случае ArgumentException возникает исключение.

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