ZipFile.Open Metoda

Definice

Otevře archiv zip v zadané cestě a v zadaném režimu.Opens a zip archive at the specified path and in the specified mode.

Přetížení

Open(String, ZipArchiveMode)

Otevře archiv zip v zadané cestě a v zadaném režimu.Opens a zip archive at the specified path and in the specified mode.

Open(String, ZipArchiveMode, Encoding)

Otevře archiv zip v zadané cestě, v zadaném režimu a pomocí zadaného kódování znaků pro zadání názvů.Opens a zip archive at the specified path, in the specified mode, and by using the specified character encoding for entry names.

Open(String, ZipArchiveMode)

Otevře archiv zip v zadané cestě a v zadaném režimu.Opens a zip archive at the specified path and in the specified mode.

public:
 static System::IO::Compression::ZipArchive ^ Open(System::String ^ archiveFileName, System::IO::Compression::ZipArchiveMode mode);
public static System.IO.Compression.ZipArchive Open (string archiveFileName, System.IO.Compression.ZipArchiveMode mode);
static member Open : string * System.IO.Compression.ZipArchiveMode -> System.IO.Compression.ZipArchive
Public Shared Function Open (archiveFileName As String, mode As ZipArchiveMode) As ZipArchive

Parametry

archiveFileName
String

Cesta k archivu, která se má otevřít, zadaná jako relativní nebo absolutní cesta.The path to the archive to open, specified as a relative or absolute path. Relativní cesta je interpretována jako relativní k aktuálnímu pracovnímu adresáři.A relative path is interpreted as relative to the current working directory.

mode
ZipArchiveMode

Jedna z hodnot výčtu, která určuje akce, které jsou povoleny u položek v otevřeném archivu.One of the enumeration values that specifies the actions which are allowed on the entries in the opened archive.

Návraty

Otevřený archiv zip.The opened zip archive.

Výjimky

archiveFileName je Empty, obsahuje pouze prázdné znaky nebo obsahuje nejméně jeden neplatný znak.archiveFileName is Empty, contains only white space, or contains at least one invalid character.

archiveFileName je null.archiveFileName is null.

V archiveFileNamezadaná cesta, název souboru nebo obojí překračují maximální délku definovanou systémem.In archiveFileName, the specified path, file name, or both exceed the system-defined maximum length.

archiveFileName je neplatný nebo neexistuje (například se nachází na nemapované jednotce).archiveFileName is invalid or does not exist (for example, it is on an unmapped drive).

archiveFileName nelze otevřít.archiveFileName could not be opened.

-nebo--or- mode je nastavená na Create, ale soubor zadaný v archiveFileName už existuje.mode is set to Create, but the file specified in archiveFileName already exists.

archiveFileName Určuje adresář.archiveFileName specifies a directory.

-nebo--or- Volající nemá požadovaná oprávnění pro přístup k souboru zadanému v archiveFileName.The caller does not have the required permission to access the file specified in archiveFileName.

mode určuje neplatnou hodnotu.mode specifies an invalid value.

mode je nastavená na Read, ale soubor zadaný v archiveFileName se nenašel.mode is set to Read, but the file specified in archiveFileName is not found.

archiveFileName obsahuje neplatný formát.archiveFileName contains an invalid format.

archiveFileName nelze interpretovat jako archiv zip.archiveFileName could not be interpreted as a zip archive.

-nebo--or- mode je Update, ale položka chybí nebo je poškozená a nedá se přečíst.mode is Update, but an entry is missing or corrupt and cannot be read.

-nebo--or- mode je Update, ale položka je příliš velká, aby se vešla do paměti.mode is Update, but an entry is too large to fit into memory.

Příklady

Následující příklad ukazuje, jak otevřít archiv zip v režimu aktualizace a přidat položku do archivu.The following example shows how to open a zip archive in the update mode and add an entry to the archive.

using System;
using System.IO;
using System.IO.Compression;

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            string zipPath = @"c:\users\exampleuser\start.zip";
            string extractPath = @"c:\users\exampleuser\extract";
            string newFile = @"c:\users\exampleuser\NewFile.txt";
            
            using (ZipArchive archive = ZipFile.Open(zipPath, ZipArchiveMode.Update))
            {
                archive.CreateEntryFromFile(newFile, "NewEntry.txt");
                archive.ExtractToDirectory(extractPath);
            } 
        }
    }
}
Imports System.IO
Imports System.IO.Compression

Module Module1

    Sub Main()
        Dim zipPath As String = "c:\users\exampleuser\end.zip"
        Dim extractPath As String = "c:\users\exampleuser\extract"
        Dim newFile As String = "c:\users\exampleuser\NewFile.txt"

        Using archive As ZipArchive = ZipFile.Open(zipPath, ZipArchiveMode.Update)
            archive.CreateEntryFromFile(newFile, "NewEntry.txt", CompressionLevel.Fastest)
            archive.ExtractToDirectory(extractPath)
        End Using
    End Sub

End Module

Poznámky

Pokud nastavíte parametr mode na hodnotu Read, bude archiv otevřen s Open z výčtu FileMode jako hodnota režimu souboru.When you set the mode parameter to Read, the archive is opened with Open from the FileMode enumeration as the file mode value. Pokud archiv neexistuje, je vyvolána výjimka FileNotFoundException.If the archive does not exist, a FileNotFoundException exception is thrown. Nastavení parametru mode na Read je ekvivalentní volání metody OpenRead.Setting the mode parameter to Read is equivalent to calling the OpenRead method.

Když nastavíte parametr mode na hodnotu Create, archiv se otevře s FileMode.CreateNew jako hodnota režimu souboru.When you set the mode parameter to Create, the archive is opened with FileMode.CreateNew as the file mode value. Pokud archiv již existuje, je vyvolána IOException.If the archive already exists, an IOException is thrown.

Když nastavíte parametr mode na hodnotu Update, archiv se otevře s FileMode.OpenOrCreate jako hodnota režimu souboru.When you set the mode parameter to Update, the archive is opened with FileMode.OpenOrCreate as the file mode value. Pokud archiv existuje, je otevřen.If the archive exists, it is opened. Existující položky lze upravit a lze vytvořit nové položky.The existing entries can be modified and new entries can be created. Pokud archiv neexistuje, vytvoří se nový archiv. vytvoření archivu zip v režimu Update ale není tak efektivní jako vytvoření v režimu Create.If the archive does not exist, a new archive is created; however, creating a zip archive in Update mode is not as efficient as creating it in Create mode.

Open(String, ZipArchiveMode, Encoding)

Otevře archiv zip v zadané cestě, v zadaném režimu a pomocí zadaného kódování znaků pro zadání názvů.Opens a zip archive at the specified path, in the specified mode, and by using the specified character encoding for entry names.

public:
 static System::IO::Compression::ZipArchive ^ Open(System::String ^ archiveFileName, System::IO::Compression::ZipArchiveMode mode, System::Text::Encoding ^ entryNameEncoding);
public static System.IO.Compression.ZipArchive Open (string archiveFileName, System.IO.Compression.ZipArchiveMode mode, System.Text.Encoding entryNameEncoding);
static member Open : string * System.IO.Compression.ZipArchiveMode * System.Text.Encoding -> System.IO.Compression.ZipArchive
Public Shared Function Open (archiveFileName As String, mode As ZipArchiveMode, entryNameEncoding As Encoding) As ZipArchive

Parametry

archiveFileName
String

Cesta k archivu, která se má otevřít, zadaná jako relativní nebo absolutní cesta.The path to the archive to open, specified as a relative or absolute path. Relativní cesta je interpretována jako relativní k aktuálnímu pracovnímu adresáři.A relative path is interpreted as relative to the current working directory.

mode
ZipArchiveMode

Jedna z hodnot výčtu, která určuje akce, které jsou povoleny u položek v otevřeném archivu.One of the enumeration values that specifies the actions that are allowed on the entries in the opened archive.

entryNameEncoding
Encoding

Kódování, které má být použito při čtení nebo zápisu názvů položek v tomto archivu.The encoding to use when reading or writing entry names in this archive. Zadejte hodnotu pro tento parametr pouze v případě, že je vyžadováno kódování pro interoperabilitu s nástroji a knihovnami archivu zip, které pro vstupní názvy nepodporují kódování UTF-8.Specify a value for this parameter only when an encoding is required for interoperability with zip archive tools and libraries that do not support UTF-8 encoding for entry names.

Návraty

Otevřený archiv zip.The opened zip archive.

Výjimky

archiveFileName je Empty, obsahuje pouze prázdné znaky nebo obsahuje nejméně jeden neplatný znak.archiveFileName is Empty, contains only white space, or contains at least one invalid character.

-nebo--or- entryNameEncoding je nastavené na kódování Unicode jiné než UTF-8.entryNameEncoding is set to a Unicode encoding other than UTF-8.

archiveFileName je null.archiveFileName is null.

V archiveFileNamezadaná cesta, název souboru nebo obojí překračují maximální délku definovanou systémem.In archiveFileName, the specified path, file name, or both exceed the system-defined maximum length.

archiveFileName je neplatný nebo neexistuje (například se nachází na nemapované jednotce).archiveFileName is invalid or does not exist (for example, it is on an unmapped drive).

archiveFileName nelze otevřít.archiveFileName could not be opened.

-nebo--or- mode je nastavená na Create, ale soubor zadaný v archiveFileName už existuje.mode is set to Create, but the file specified in archiveFileName already exists.

archiveFileName Určuje adresář.archiveFileName specifies a directory.

-nebo--or- Volající nemá požadovaná oprávnění pro přístup k souboru zadanému v archiveFileName.The caller does not have the required permission to access the file specified in archiveFileName.

mode určuje neplatnou hodnotu.mode specifies an invalid value.

mode je nastavená na Read, ale soubor zadaný v archiveFileName se nenašel.mode is set to Read, but the file specified in archiveFileName is not found.

archiveFileName obsahuje neplatný formát.archiveFileName contains an invalid format.

archiveFileName nelze interpretovat jako archiv zip.archiveFileName could not be interpreted as a zip archive.

-nebo--or- mode je Update, ale položka chybí nebo je poškozená a nedá se přečíst.mode is Update, but an entry is missing or corrupt and cannot be read.

-nebo--or- mode je Update, ale položka je příliš velká, aby se vešla do paměti.mode is Update, but an entry is too large to fit into memory.

Poznámky

Když nastavíte parametr mode na hodnotu Read, archiv se otevře s FileMode.Open jako hodnota režimu souboru.When you set the mode parameter to Read, the archive is opened with FileMode.Open as the file mode value. Pokud archiv neexistuje, je vyvolána výjimka FileNotFoundException.If the archive does not exist, a FileNotFoundException exception is thrown. Nastavení parametru mode na Read je ekvivalentní volání metody OpenRead.Setting the mode parameter to Read is equivalent to calling the OpenRead method.

Když nastavíte parametr mode na hodnotu Create, archiv se otevře s FileMode.CreateNew jako hodnota režimu souboru.When you set the mode parameter to Create, the archive is opened with FileMode.CreateNew as the file mode value. Pokud archiv již existuje, je vyvolána IOException.If the archive already exists, an IOException is thrown.

Když nastavíte parametr mode na hodnotu Update, archiv se otevře s FileMode.OpenOrCreate jako hodnota režimu souboru.When you set the mode parameter to Update, the archive is opened with FileMode.OpenOrCreate as the file mode value. Pokud archiv existuje, je otevřen.If the archive exists, it is opened. Existující položky lze upravit a lze vytvořit nové položky.The existing entries can be modified and new entries can be created. Pokud archiv neexistuje, vytvoří se nový archiv. vytvoření archivu zip v režimu Update ale není tak efektivní jako vytvoření v režimu Create.If the archive does not exist, a new archive is created; however, creating a zip archive in Update mode is not as efficient as creating it in Create mode.

Když otevřete soubor archivu zip pro čtení a entryNameEncoding je nastavené na null, názvy položek se dekóduje podle následujících pravidel:When you open a zip archive file for reading and entryNameEncoding is set to null, entry names are decoded according to the following rules:

  • Pokud není nastaven příznak kódování jazyka (v poli příznak bitového pro obecné použití v hlavičce místního souboru), použije se k dekódování názvu položky aktuální výchozí systémová znaková stránka.When the language encoding flag (in the general-purpose bit flag of the local file header) is not set, the current system default code page is used to decode the entry name.

  • Pokud je nastaven příznak kódování jazyka, použije se k dekódování názvu položky znak UTF-8.When the language encoding flag is set, UTF-8 is used to decode the entry name.

Když otevřete soubor archivu zip pro čtení a entryNameEncoding je nastavená na jinou hodnotu než null, názvy položek se dekóduje podle následujících pravidel:When you open a zip archive file for reading and entryNameEncoding is set to a value other than null, entry names are decoded according to the following rules:

  • Pokud není nastaven příznak kódování jazyka, je k dekódování názvu položky použit zadaný entryNameEncoding.When the language encoding flag is not set, the specified entryNameEncoding is used to decode the entry name.

  • Pokud je nastaven příznak kódování jazyka, použije se k dekódování názvu položky znak UTF-8.When the language encoding flag is set, UTF-8 is used to decode the entry name.

Když zapisujete do souborů archivu a entryNameEncoding je nastavená na null, názvy položek se zakódují podle následujících pravidel:When you write to archive files and entryNameEncoding is set to null, entry names are encoded according to the following rules:

  • U názvů zadání, které obsahují znaky mimo rozsah ASCII, je nastaven příznak kódování jazyka a vstupní názvy jsou kódovány pomocí kódování UTF-8.For entry names that contain characters outside the ASCII range, the language encoding flag is set, and entry names are encoded by using UTF-8.

  • U názvů zadání, které obsahují pouze znaky ASCII, není nastaven příznak kódování jazyka a názvy záznamů jsou zakódovány pomocí výchozí systémové znakové stránky.For entry names that contain only ASCII characters, the language encoding flag is not set, and entry names are encoded by using the current system default code page.

Když zapisujete do souborů archivu a entryNameEncoding je nastavená na jinou hodnotu než null, zadaný entryNameEncoding se použije ke kódování názvů položek do bajtů.When you write to archive files and entryNameEncoding is set to a value other than null, the specified entryNameEncoding is used to encode the entry names into bytes. Příznak kódování jazyka (v případě bitového příznaku pro obecné účely v hlavičce místního souboru) je nastaven pouze v případě, že zadané kódování je kódování UTF-8.The language encoding flag (in the general-purpose bit flag of the local file header) is set only when the specified encoding is a UTF-8 encoding.

Platí pro