ZipArchive.CreateAsync Metoda

Definice

Asynchronně inicializuje a vrátí novou instanci daného datového ZipArchive proudu v zadaném režimu a určuje, zda se má datový proud ponechat otevřený, s volitelným kódováním a volitelným tokenem zrušení.

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)

Parametry

stream
Stream

Vstupní nebo výstupní datový proud.

mode
ZipArchiveMode

Jedna z hodnot výčtu, která určuje, zda datový proud podporuje čtení, zápis a hledání.

leaveOpen
Boolean

true nechat proud otevřený po zveřejnění ZipArchive, jinak false.

entryNameEncoding
Encoding

Kódování, které se má použít při čtení nebo zápisu názvů položek a komentářů v této zipArchive.

cancellationToken
CancellationToken

Volitelný token zrušení, který se má monitorovat.

Návraty

Výjimky

Stream je již zavřený.

nebo

mode není kompatibilní s možnostmi datového proudu.

Stream je null.

mode zadal neplatnou hodnotu.

Obsah datového proudu nelze interpretovat jako soubor ZIP.

nebo

mode je Aktualizovat a položka chybí v archivu nebo je poškozena a nelze ji přečíst.

nebo

mode je Aktualizovat a položka je příliš velká, aby se vešla do paměti.

Pro kódování Unicode bylo zadáno jiné kódování než UTF-8 .entryNameEncoding

Poznámky

Zadání hodnoty pro entryNameEncoding jinou hodnotu, než null je zakázáno. To však může být nezbytné pro interoperabilitu s archivními nástroji a knihovnami ZIP, které správně nepodporují kódování UTF-8 pro názvy položek.

Tato hodnota se používá takto:

  • Čtení (otevírání) archivní soubory ZIP:
    • Pokud entryNameEncoding není zadán (== null):
      • Pro položky, ve kterých není nastaven příznak kódování jazyka (EFS) v příznaku bitu pro obecné účely hlavičky místního souboru, použijte aktuální výchozí znakovou stránku systému (Encoding.Default) k dekódování názvu položky a komentáře.
      • Pro položky, kde je nastaven příznak kódování jazyka (EFS) v příznaku pro obecné účely hlavičky místního souboru, použijte UTF-8 (Encoding.UTF8) k dekódování názvu položky a komentáře.
    • Pokud entryNameEncoding je zadán (!= null):
      • Pro položky, ve kterých není nastaven příznak kódování jazyka (EFS) v příznaku bitu pro obecné účely hlavičky místního souboru, použijte určený entryNameEncoding k dekódování názvu položky a komentáře.
      • Pro položky, kde je nastaven příznak kódování jazyka (EFS) v příznaku pro obecné účely hlavičky místního souboru, použijte UTF-8 (Encoding.UTF8) k dekódování názvu položky a komentáře.
  • Zápis (ukládání) archivní soubory ZIP:
    • Pokud entryNameEncoding není zadán (== null):
      • Pro názvy položek a komentáře, které obsahují znaky mimo rozsah ASCII, se příznak kódování jazyka (EFS) nastaví v příznaku bitu pro obecné účely v hlavičce místního souboru a UTF-8 (Encoding.UTF8) se použije ke kódování názvu položky a komentáře do bajtů.
      • U názvů položek a komentářů, které neobsahují znaky mimo rozsah ASCII, se příznak kódování jazyka (EFS) nenastaví v příznaku bitu pro obecné účely záhlaví místního souboru a aktuální výchozí znaková stránka systému (Encoding.Default) se použije ke kódování názvů položek a komentářů do bajtů.
    • Pokud entryNameEncoding je zadán (!= null):
      • Zadaná entryNameEncoding hodnota bude vždy použita ke kódování názvů položek a komentářů do bajtů.
      • Příznak kódování jazyka (EFS) v příznaku bitu pro obecné účely hlavičky místního souboru bude nastaven, pouze pokud je zadaný entryNameEncoding kód UTF-8.
  • Platí pro