ZipArchive.CreateAsync Método

Definição

Inicializa e devolve assíncronamente uma nova instância de ZipArchive no fluxo dado no modo especificado, especificando se deve deixar o fluxo aberto, com uma codificação opcional e um token de cancelamento opcional.

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)

Parâmetros

stream
Stream

O fluxo de entrada ou saída.

mode
ZipArchiveMode

Um dos valores de enumeração que especifica se o fluxo suporta leitura, escrita e procura.

leaveOpen
Boolean

true para deixar o fluxo aberto ao descartar o ZipArchive, caso contrário false.

entryNameEncoding
Encoding

A codificação a usar ao ler ou escrever nomes de entradas e comentários neste ZipArchive.

cancellationToken
CancellationToken

O token de cancelamento opcional para monitorizar.

Devoluções

Exceções

O riacho já está fechado.

-ou-

mode é incompatível com as capacidades do stream.

O fluxo é null.

mode especificou um valor inválido.

O conteúdo do fluxo não podia ser interpretado como um ficheiro ZIP.

-ou-

mode é Update e falta uma entrada no arquivo ou está corrompida e não pode ser lida.

-ou-

mode é Update e uma entrada é demasiado grande para caber na memória.

Uma codificação Unicode diferente da UTF-8 foi especificada para entryNameEncoding.

Observações

Especificar um valor para entryNameEncoding outro que null não é desencorajado. No entanto, isto pode ser necessário para a interoperabilidade com ferramentas e bibliotecas de arquivo ZIP que não suportam corretamente a codificação UTF-8 para nomes de entrada.

Este valor é usado da seguinte forma:

  • Leitura (abertura) de ficheiros de arquivo ZIP:
    • Se entryNameEncoding não for especificado (== null):
      • Para entradas onde o flag de codificação da linguagem (EFS) no flag de bit de uso geral do cabeçalho local do ficheiro não está definido, use a página de código padrão do sistema atual (Encoding.Default) para decodificar o nome da entrada e o comentário.
      • Para entradas onde o flag de codificação da linguagem (EFS) no flag de bit de uso geral do cabeçalho local do ficheiro está definido, use UTF-8 (Encoding.UTF8) para decodificar o nome da entrada e o comentário.
    • Se entryNameEncoding for especificado (!= null):
      • Para entradas onde o flag de codificação da linguagem (EFS) no flag de bit de uso geral do cabeçalho local do ficheiro não está definido, use o especificado entryNameEncoding para decodificar o nome da entrada e o comentário.
      • Para entradas onde o flag de codificação da linguagem (EFS) no flag de bit de uso geral do cabeçalho local do ficheiro está definido, use UTF-8 (Encoding.UTF8) para decodificar o nome da entrada e o comentário.
  • Escrever (guardar) ficheiros de arquivo ZIP:
    • Se entryNameEncoding não for especificado (== null):
      • Para nomes de entrada e comentários que contenham caracteres fora do intervalo ASCII, a flag de codificação da linguagem (EFS) será definida no flag de bit de uso geral do cabeçalho local do ficheiro, e será usado UTF-8 (Encoding.UTF8) para codificar o nome da entrada e o comentário em bytes.
      • Para nomes de entradas e comentários que não contenham caracteres fora do intervalo ASCII, o flag de codificação da linguagem (EFS) não será definido no flag de bit de uso geral do cabeçalho local do ficheiro, e a página de código padrão do sistema atual (Encoding.Default) será usada para codificar os nomes das entradas e comentários em bytes.
    • Se entryNameEncoding for especificado (!= null):
      • O especificado entryNameEncoding será sempre usado para codificar os nomes das entradas e comentários em bytes.
      • O flag de codificação da linguagem (EFS) no flag de bit de uso geral do cabeçalho local do ficheiro será definido se, e somente se, o especificado entryNameEncoding for uma codificação UTF-8.
  • Aplica-se a