Udostępnij za pośrednictwem


ZipFile.Open Metoda

Definicja

Otwiera archiwum zip w określonej ścieżce i w określonym trybie.

Przeciążenia

Open(String, ZipArchiveMode, Encoding)

Otwiera archiwum zip w określonej ścieżce w określonym trybie i przy użyciu określonego kodowania znaków dla nazw wpisów.

Open(String, ZipArchiveMode)

Otwiera archiwum zip w określonej ścieżce i w określonym trybie.

Open(String, ZipArchiveMode, Encoding)

Źródło:
ZipFile.Create.cs
Źródło:
ZipFile.Create.cs
Źródło:
ZipFile.Create.cs

Otwiera archiwum zip w określonej ścieżce w określonym trybie i przy użyciu określonego kodowania znaków dla nazw wpisów.

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);
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

Ścieżka do archiwum do otwarcia, określona jako ścieżka względna lub bezwzględna. Ścieżka względna jest interpretowana jako względna względem bieżącego katalogu roboczego.

mode
ZipArchiveMode

Jedna z wartości wyliczenia, która określa akcje dozwolone w wpisach w otwartym archiwum.

entryNameEncoding
Encoding

Kodowanie do użycia podczas odczytywania lub zapisywania nazw wpisów w tym archiwum. Określ wartość tego parametru tylko wtedy, gdy kodowanie jest wymagane do współdziałania z narzędziami archiwum zip i bibliotekami, które nie obsługują kodowania UTF-8 dla nazw wpisów.

Zwraca

Otwarte archiwum zip.

Wyjątki

archiveFileName to Empty, zawiera tylko białe znaki lub zawiera co najmniej jeden nieprawidłowy znak.

-lub-

entryNameEncoding jest ustawiona na kodowanie Unicode inne niż UTF-8.

archiveFileName to null.

W archiveFileNameprogramie określona ścieżka, nazwa pliku lub oba te wartości przekraczają maksymalną długość zdefiniowaną przez system.

archiveFileName jest nieprawidłowy lub nie istnieje (na przykład znajduje się na niezamapowanym dysku).

archiveFileName nie można otworzyć.

-lub-

mode jest ustawiona na Createwartość , ale plik określony w archiveFileName już istnieje.

-lub-

Wystąpił nieokreślony błąd we/wy podczas otwierania pliku.

archiveFileName określa katalog.

-lub-

Obiekt wywołujący nie ma wymaganych uprawnień dostępu do pliku określonego w pliku .archiveFileName

mode określa nieprawidłową wartość.

mode jest ustawiona na Readwartość , ale nie można odnaleźć pliku określonego w archiveFileName pliku .

archiveFileName zawiera nieprawidłowy format.

archiveFileName nie można interpretować jako archiwum zip.

-lub-

mode to Update, ale brakuje wpisu lub jest on uszkodzony i nie można go odczytać.

-lub-

mode to Update, ale wpis jest zbyt duży, aby zmieścić się w pamięci.

Uwagi

Po ustawieniu parametru mode na Readwartość , archiwum jest otwierane jako FileMode.Open wartość trybu pliku. Jeśli archiwum nie istnieje, FileNotFoundException zgłaszany jest wyjątek. Ustawienie parametru mode na Read wartość jest równoważne wywołaniu OpenRead metody .

Po ustawieniu parametru mode na Createwartość , archiwum jest otwierane jako FileMode.CreateNew wartość trybu pliku. Jeśli archiwum już istnieje, IOException zostanie zgłoszony element .

Po ustawieniu parametru mode na Updatewartość , archiwum jest otwierane jako FileMode.OpenOrCreate wartość trybu pliku. Jeśli archiwum istnieje, zostanie otwarte. Istniejące wpisy można modyfikować i tworzyć nowe wpisy. Jeśli archiwum nie istnieje, zostanie utworzone nowe archiwum; jednak tworzenie archiwum zip w Update trybie nie jest tak wydajne, jak tworzenie go w Create trybie.

Po otwarciu pliku archiwum zip do odczytu i entryNameEncoding ustawieniu na nullwartość , nazwy wpisów są dekodowane zgodnie z następującymi regułami:

  • Gdy flaga kodowania języka (w flagi bitowej ogólnego przeznaczenia nagłówka pliku lokalnego) nie jest ustawiona, bieżąca domyślna strona kodowa systemu jest używana do dekodowania nazwy wpisu.

  • Po ustawieniu flagi kodowania języka kodowanie UTF-8 służy do dekodowania nazwy wpisu.

Po otwarciu pliku archiwum zip do odczytu i entryNameEncoding jest ustawiona na wartość inną niż null, nazwy wpisów są dekodowane zgodnie z następującymi regułami:

  • Gdy flaga kodowania języka nie jest ustawiona, określona entryNameEncoding jest używana do dekodowania nazwy wpisu.

  • Po ustawieniu flagi kodowania języka kodowanie UTF-8 służy do dekodowania nazwy wpisu.

Podczas zapisywania w plikach archiwum i entryNameEncoding ustawiono na nullwartość , nazwy wpisów są kodowane zgodnie z następującymi regułami:

  • W przypadku nazw wpisów zawierających znaki poza zakresem ASCII jest ustawiona flaga kodowania języka, a nazwy wpisów są kodowane przy użyciu protokołu UTF-8.

  • W przypadku nazw wpisów zawierających tylko znaki ASCII flaga kodowania języka nie jest ustawiona, a nazwy wpisów są kodowane przy użyciu bieżącej domyślnej strony kodowej systemu.

Podczas zapisywania w plikach archiwum i entryNameEncoding ustawiana jest wartość inna niż null, określona entryNameEncoding jest używana do kodowania nazw wpisów do bajtów. Flaga kodowania języka (w flagi bitowej ogólnego przeznaczenia nagłówka pliku lokalnego) jest ustawiana tylko wtedy, gdy określone kodowanie jest kodowaniem UTF-8.

Dotyczy

Open(String, ZipArchiveMode)

Źródło:
ZipFile.Create.cs
Źródło:
ZipFile.Create.cs
Źródło:
ZipFile.Create.cs

Otwiera archiwum zip w określonej ścieżce i w określonym trybie.

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

Ścieżka do archiwum do otwarcia, określona jako ścieżka względna lub bezwzględna. Ścieżka względna jest interpretowana jako względna względem bieżącego katalogu roboczego.

mode
ZipArchiveMode

Jedna z wartości wyliczenia, która określa akcje, które są dozwolone w wpisach w otwartym archiwum.

Zwraca

Otwarte archiwum zip.

Wyjątki

archiveFileName to Empty, zawiera tylko białe znaki lub zawiera co najmniej jeden nieprawidłowy znak.

archiveFileName to null.

W archiveFileNameprogramie określona ścieżka, nazwa pliku lub oba te wartości przekraczają maksymalną długość zdefiniowaną przez system.

archiveFileName jest nieprawidłowy lub nie istnieje (na przykład znajduje się na niezamapowanym dysku).

archiveFileName nie można otworzyć.

-lub-

mode jest ustawiona na Createwartość , ale plik określony w archiveFileName już istnieje.

-lub-

Wystąpił nieokreślony błąd we/wy podczas otwierania pliku.

archiveFileName określa katalog.

-lub-

Obiekt wywołujący nie ma wymaganych uprawnień dostępu do pliku określonego w pliku .archiveFileName

mode określa nieprawidłową wartość.

mode jest ustawiona na Readwartość , ale nie można odnaleźć pliku określonego w archiveFileName pliku .

archiveFileName zawiera nieprawidłowy format.

archiveFileName nie można interpretować jako archiwum zip.

-lub-

mode to Update, ale brakuje wpisu lub jest on uszkodzony i nie można go odczytać.

-lub-

mode to Update, ale wpis jest zbyt duży, aby zmieścić się w pamięci.

Przykłady

W poniższym przykładzie pokazano, jak otworzyć archiwum zip w trybie aktualizacji i dodać wpis do archiwum.

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);
            }
        }
    }
}
open System.IO.Compression

let zipPath = @"c:\users\exampleuser\start.zip"
let extractPath = @"c:\users\exampleuser\extract"
let newFile = @"c:\users\exampleuser\NewFile.txt"

do
    use archive = ZipFile.Open(zipPath, ZipArchiveMode.Update)
    archive.CreateEntryFromFile(newFile, "NewEntry.txt") |> ignore
    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

Uwagi

Po ustawieniu parametru mode na Readwartość , archiwum jest otwierane z Open wyliczenia FileMode jako wartość trybu pliku. Jeśli archiwum nie istnieje, FileNotFoundException zgłaszany jest wyjątek. Ustawienie parametru mode na Read wartość jest równoważne wywołaniu OpenRead metody .

Po ustawieniu parametru mode na Createwartość , archiwum jest otwierane jako FileMode.CreateNew wartość trybu pliku. Jeśli archiwum już istnieje, IOException zostanie zgłoszony element .

Po ustawieniu parametru mode na Updatewartość , archiwum jest otwierane jako FileMode.OpenOrCreate wartość trybu pliku. Jeśli archiwum istnieje, zostanie otwarte. Istniejące wpisy można modyfikować i tworzyć nowe wpisy. Jeśli archiwum nie istnieje, zostanie utworzone nowe archiwum; jednak tworzenie archiwum zip w Update trybie nie jest tak wydajne, jak tworzenie go w Create trybie.

Dotyczy