ZipFile.OpenAsync Метод

Определение

Перегрузки

Имя Описание
OpenAsync(String, ZipArchiveMode, CancellationToken)

Асинхронно открывается ZipArchive в указанном archiveFileNameZipArchiveMode режиме.

OpenAsync(String, ZipArchiveMode, Encoding, CancellationToken)

Асинхронно открывается ZipArchive в указанном archiveFileNameZipArchiveMode режиме.

OpenAsync(String, ZipArchiveMode, CancellationToken)

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

Асинхронно открывается ZipArchive в указанном archiveFileNameZipArchiveMode режиме.

public static System.Threading.Tasks.Task<System.IO.Compression.ZipArchive> OpenAsync(string archiveFileName, System.IO.Compression.ZipArchiveMode mode, System.Threading.CancellationToken cancellationToken = default);
static member OpenAsync : string * System.IO.Compression.ZipArchiveMode * System.Threading.CancellationToken -> System.Threading.Tasks.Task<System.IO.Compression.ZipArchive>
Public Shared Function OpenAsync (archiveFileName As String, mode As ZipArchiveMode, Optional cancellationToken As CancellationToken = Nothing) As Task(Of ZipArchive)

Параметры

archiveFileName
String

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

mode
ZipArchiveMode

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

cancellationToken
CancellationToken

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

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

Исключения

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

archiveFileName равно null.

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

Указанный параметр archiveFileName недопустим (например, он находится на несопоставленном диске).

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

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

–или–

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

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

Файл, указанный в archiveFileName, не найден.

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

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

–или–

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

–или–

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

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

Комментарии

Для archiveFileName:

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

Для mode:

Если Read задано, файл открывается с System.IO.FileMode.Openпомощью и вызывает исключение FileNotFoundException , если файл не существует.

Если Create задано, файл открывается с System.IO.FileMode.CreateNewпомощью и вызывает исключение System.IO.IOException , если файл уже существует.

Если Update задано, файл открывается с System.IO.FileMode.OpenOrCreateпомощью .

Если файл существует и является ZIP-файлом, его записи становятся доступными и могут быть изменены, а новые записи можно создать.

Если файл существует и не является ZIP-файлом, InvalidDataException создается исключение.

Если файл существует и пуст или не существует, будет создан новый ZIP-файл.

Создание ZIP-файла с Create режимом более эффективно при создании zip-файла.

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

OpenAsync(String, ZipArchiveMode, Encoding, CancellationToken)

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

Асинхронно открывается ZipArchive в указанном archiveFileNameZipArchiveMode режиме.

public static System.Threading.Tasks.Task<System.IO.Compression.ZipArchive> OpenAsync(string archiveFileName, System.IO.Compression.ZipArchiveMode mode, System.Text.Encoding? entryNameEncoding, System.Threading.CancellationToken cancellationToken = default);
static member OpenAsync : string * System.IO.Compression.ZipArchiveMode * System.Text.Encoding * System.Threading.CancellationToken -> System.Threading.Tasks.Task<System.IO.Compression.ZipArchive>
Public Shared Function OpenAsync (archiveFileName As String, mode As ZipArchiveMode, entryNameEncoding As Encoding, Optional cancellationToken As CancellationToken = Nothing) As Task(Of ZipArchive)

Параметры

archiveFileName
String

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

mode
ZipArchiveMode

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

entryNameEncoding
Encoding

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

cancellationToken
CancellationToken

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

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

Исключения

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

archiveFileName равно null.

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

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

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

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

–или–

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

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

Файл, указанный в archiveFileName, не найден.

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

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

–или–

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

–или–

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

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

Комментарии

Для archiveFileName:

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

Для mode:

Если Read задано, файл открывается с System.IO.FileMode.Openпомощью и вызывает исключение FileNotFoundException , если файл не существует.

Если Create задано, файл открывается с System.IO.FileMode.CreateNewпомощью и вызывает исключение System.IO.IOException , если файл уже существует.

Если Update задано, файл открывается с System.IO.FileMode.OpenOrCreateпомощью .

Если файл существует и является ZIP-файлом, его записи становятся доступными и могут быть изменены, а новые записи можно создать.

Если файл существует и не является ZIP-файлом, InvalidDataException создается исключение.

Если файл существует и пуст или не существует, будет создан новый ZIP-файл.

Создание ZIP-файла с Create режимом более эффективно при создании zip-файла.

Указание значения, отличного от значения, отличного от 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.
  • Кодировки Юникода, отличные от UTF-8, нельзя использовать для entryNameEncodingнее, в противном случае ArgumentException возникает исключение.

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