ZipFile.OpenAsync Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Перегрузки
| Имя | Описание |
|---|---|
| OpenAsync(String, ZipArchiveMode, CancellationToken) |
Асинхронно открывается |
| OpenAsync(String, ZipArchiveMode, Encoding, CancellationToken) |
Асинхронно открывается |
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 для имен записей или комментариев.
Это значение используется следующим образом:
- Если
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.
- Указанные
Кодировки Юникода, отличные от UTF-8, нельзя использовать для entryNameEncodingнее, в противном случае ArgumentException возникает исключение.