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
Необязательный маркер отмены для отслеживания.
Возвращаемое значение
Исключения
Поток имеет значение null.
mode указал недопустимое значение.
Содержимое потока не может быть интерпретировано как ZIP-файл.
–или–
mode имеет значение Update, а запись отсутствует в архиве или повреждена и не может быть прочитана.
–или–
mode — обновление, и запись слишком велика, чтобы поместиться в память.
Для кодировки Юникода entryNameEncoding, отличной от UTF-8.
Комментарии
Указание значения, отличного null от entryNameEncoding не рекомендуется. Однако это может потребоваться для взаимодействия с средствами и библиотеками ZIP-архива, которые неправильно поддерживают кодировку UTF-8 для имен записей.
Это значение используется следующим образом:
- Если
entryNameEncodingне указано (== null):- Для записей, в которых флаг кодировки языка (EFS) в битовом флаге общего назначения заголовка локального файла не задано, используйте текущую кодовую страницу по умолчанию системы (
Encoding.Default) для декодировки имени записи и комментария. - Для записей, в которых установлен флаг кодировки языка (EFS) в битовом флаге общего назначения заголовка локального файла, используйте UTF-8 (
Encoding.UTF8), чтобы декодировать имя записи и комментарий.
- Для записей, в которых флаг кодировки языка (EFS) в битовом флаге общего назначения заголовка локального файла не задано, используйте текущую кодовую страницу по умолчанию системы (
- Если
entryNameEncodingзадано (!= null):- Для записей, в которых флаг кодировки языка (EFS) в битовом флаге общего назначения заголовка локального файла не задано, используйте указанный
entryNameEncodingдля декодировки имени и комментария записи. - Для записей, в которых установлен флаг кодировки языка (EFS) в битовом флаге общего назначения заголовка локального файла, используйте UTF-8 (
Encoding.UTF8), чтобы декодировать имя записи и комментарий.
- Для записей, в которых флаг кодировки языка (EFS) в битовом флаге общего назначения заголовка локального файла не задано, используйте указанный
- Если
entryNameEncodingне указано (== null):- Для имен записей и комментариев, содержащих символы за пределами диапазона ASCII, флаг кодировки языка (EFS) будет установлен в битовом флаге общего назначения заголовка локального файла, а UTF-8 (
Encoding.UTF8) будет использоваться для кодирования имени записи и примечания в байтах. - Для имен записей и комментариев, которые не содержат символов за пределами диапазона ASCII, флаг кодировки языка (EFS) не будет задан в битовом флаге общего назначения заголовка локального файла, а текущая системная кодовая страница по умолчанию (
Encoding.Default) будет использоваться для кодирования имен записей и комментариев в байтах.
- Для имен записей и комментариев, содержащих символы за пределами диапазона ASCII, флаг кодировки языка (EFS) будет установлен в битовом флаге общего назначения заголовка локального файла, а UTF-8 (
- Если
entryNameEncodingзадано (!= null):- Указанные
entryNameEncodingзначения всегда будут использоваться для кодирования имен записей и комментариев в байтах. - Флаг кодировки языка (EFS) в битовом флаге общего назначения заголовка локального файла будет задан, только если указано
entryNameEncodingкодировка UTF-8.
- Указанные