ZipArchive.CreateAsync Метод

Определение

Асинхронно инициализирует и возвращает новый экземпляр ZipArchive данного потока в указанном режиме, указывая, следует ли оставить поток открытым, с необязательным кодировкой и необязательным маркером отмены.

public static System.Threading.Tasks.Task<System.IO.Compression.ZipArchive> CreateAsync(System.IO.Stream stream, System.IO.Compression.ZipArchiveMode mode, bool leaveOpen, System.Text.Encoding? entryNameEncoding, System.Threading.CancellationToken cancellationToken = default);
static member CreateAsync : System.IO.Stream * System.IO.Compression.ZipArchiveMode * bool * System.Text.Encoding * System.Threading.CancellationToken -> System.Threading.Tasks.Task<System.IO.Compression.ZipArchive>
Public Shared Function CreateAsync (stream As Stream, mode As ZipArchiveMode, leaveOpen As Boolean, entryNameEncoding As Encoding, Optional cancellationToken As CancellationToken = Nothing) As Task(Of ZipArchive)

Параметры

stream
Stream

Входной или выходной поток.

mode
ZipArchiveMode

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

leaveOpen
Boolean

true , чтобы оставить поток открытым при удалении ZipArchive, в противном случае false.

entryNameEncoding
Encoding

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

cancellationToken
CancellationToken

Необязательный маркер отмены для отслеживания.

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

Исключения

Поток уже закрыт.

–или–

mode несовместим с возможностями потока.

Поток имеет значение null.

mode указал недопустимое значение.

Содержимое потока не может быть интерпретировано как ZIP-файл.

–или–

mode имеет значение Update, а запись отсутствует в архиве или повреждена и не может быть прочитана.

–или–

mode — обновление, и запись слишком велика, чтобы поместиться в память.

Для кодировки Юникода entryNameEncoding, отличной от UTF-8.

Комментарии

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

Это значение используется следующим образом:

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