ZipFile.Open Metódus

Definíció

Megnyit egy zip-archívumot a megadott elérési úton és a megadott módban.

Túlterhelések

Name Description
Open(String, ZipArchiveMode)

Megnyit egy zip-archívumot a megadott elérési úton és a megadott módban.

Open(String, ZipArchiveMode, Encoding)

Megnyit egy zip-archívumot a megadott elérési úton, a megadott módban, valamint a megadott karakterkódolás használatával a bejegyzésnevekhez és megjegyzésekhez.

Open(String, ZipArchiveMode)

Megnyit egy zip-archívumot a megadott elérési úton és a megadott módban.

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

Paraméterek

archiveFileName
String

A megnyitni kívánt archívum elérési útja, amely relatív vagy abszolút elérési útként van megadva. A relatív elérési út az aktuális munkakönyvtárhoz képest értelmezve van.

mode
ZipArchiveMode

Az egyik számbavételi érték, amely meghatározza a megnyitott archívum bejegyzéseiben engedélyezett műveleteket.

Válaszok

A megnyitott zip archívum.

Kivételek

archiveFileName is Empty, csak üres szóközt tartalmaz, vagy legalább egy érvénytelen karaktert tartalmaz.

archiveFileName az null.

A archiveFileNamemegadott elérési út, fájlnév vagy mindkettő meghaladja a rendszer által megadott maximális hosszt.

archiveFileName érvénytelen vagy nem létezik (például egy nem leképezett meghajtón).

archiveFileName nem nyitható meg.

-vagy-

mode értékre Createvan állítva, de a megadott archiveFileName fájl már létezik.

-vagy-

Meghatározatlan I/O-hiba történt a fájl megnyitásakor.

archiveFileName egy könyvtárat határoz meg.

-vagy-

A hívó nem rendelkezik a szükséges engedéllyel a megadott archiveFileNamefájl eléréséhez.

mode érvénytelen értéket ad meg.

mode értékre Readvan állítva, de a megadott archiveFileName fájl nem található.

archiveFileName érvénytelen formátumot tartalmaz.

archiveFileName nem értelmezhető zip archívumként.

-vagy-

mode van Update, de egy bejegyzés hiányzik vagy sérült, és nem olvasható.

-vagy-

mode van Update, de egy bejegyzés túl nagy ahhoz, hogy beleférjen a memóriába.

Példák

Az alábbi példa bemutatja, hogyan nyithat meg zip archívumot frissítési módban, és hogyan adhat hozzá bejegyzést az archívumhoz.

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

Megjegyzések

Amikor beállítja a mode paramétert Read, az archívum megnyílik Open az FileMode enumerálásból fájlmód-értékként. Ha az archívum nem létezik, kivétel FileNotFoundException jelenik meg. mode A paraméter Read beállítása egyenértékű a metódus meghívásávalOpenRead.

Amikor beállítja a mode paramétert Create, a rendszer fájlmód-értékként megnyitja FileMode.CreateNew az archívumot. Ha az archívum már létezik, a program eldob egy fájlt IOException .

Amikor beállítja a mode paramétert Update, a rendszer fájlmód-értékként megnyitja FileMode.OpenOrCreate az archívumot. Ha az archívum létezik, megnyílik. A meglévő bejegyzések módosíthatók, és új bejegyzések hozhatók létre. Ha az archívum nem létezik, létrejön egy új archívum; azonban a zip-archívumok Update módban történő létrehozása nem olyan hatékony, mint a módban történő létrehozása Create .

A következőre érvényes:

Open(String, ZipArchiveMode, Encoding)

Megnyit egy zip-archívumot a megadott elérési úton, a megadott módban, valamint a megadott karakterkódolás használatával a bejegyzésnevekhez és megjegyzésekhez.

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

Paraméterek

archiveFileName
String

A megnyitni kívánt archívum elérési útja, amely relatív vagy abszolút elérési útként van megadva. A relatív elérési út az aktuális munkakönyvtárhoz képest értelmezve van.

mode
ZipArchiveMode

Az egyik számbavételi érték, amely meghatározza a megnyitott archívum bejegyzéseiben engedélyezett műveleteket.

entryNameEncoding
Encoding

Az archívumban lévő bejegyzésnevek és megjegyzések olvasásához vagy írásához használandó kódolás. Csak akkor adjon meg értéket ehhez a paraméterhez, ha kódolásra van szükség a bejegyzésnevek és megjegyzések UTF-8 kódolását nem támogató zip archív eszközökkel és kódtárakkal való együttműködéshez.

Válaszok

A megnyitott zip archívum.

Kivételek

archiveFileName is Empty, csak üres szóközt tartalmaz, vagy legalább egy érvénytelen karaktert tartalmaz.

-vagy-

entryNameEncoding az UTF-8-tól eltérő Unicode-kódolásra van beállítva.

archiveFileName az null.

A archiveFileNamemegadott elérési út, fájlnév vagy mindkettő meghaladja a rendszer által megadott maximális hosszt.

archiveFileName érvénytelen vagy nem létezik (például egy nem leképezett meghajtón).

archiveFileName nem nyitható meg.

-vagy-

mode értékre Createvan állítva, de a megadott archiveFileName fájl már létezik.

-vagy-

Meghatározatlan I/O-hiba történt a fájl megnyitásakor.

archiveFileName egy könyvtárat határoz meg.

-vagy-

A hívó nem rendelkezik a szükséges engedéllyel a megadott archiveFileNamefájl eléréséhez.

mode érvénytelen értéket ad meg.

mode értékre Readvan állítva, de a megadott archiveFileName fájl nem található.

archiveFileName érvénytelen formátumot tartalmaz.

archiveFileName nem értelmezhető zip archívumként.

-vagy-

mode van Update, de egy bejegyzés hiányzik vagy sérült, és nem olvasható.

-vagy-

mode van Update, de egy bejegyzés túl nagy ahhoz, hogy beleférjen a memóriába.

Megjegyzések

Amikor beállítja a mode paramétert Read, a rendszer fájlmód-értékként megnyitja FileMode.Open az archívumot. Ha az archívum nem létezik, kivétel FileNotFoundException jelenik meg. mode A paraméter Read beállítása egyenértékű a metódus meghívásávalOpenRead.

Amikor beállítja a mode paramétert Create, a rendszer fájlmód-értékként megnyitja FileMode.CreateNew az archívumot. Ha az archívum már létezik, a program eldob egy fájlt IOException .

Amikor beállítja a mode paramétert Update, a rendszer fájlmód-értékként megnyitja FileMode.OpenOrCreate az archívumot. Ha az archívum létezik, megnyílik. A meglévő bejegyzések módosíthatók, és új bejegyzések hozhatók létre. Ha az archívum nem létezik, létrejön egy új archívum; azonban a zip-archívumok Update módban történő létrehozása nem olyan hatékony, mint a módban történő létrehozása Create .

Amikor megnyit egy zip-archívumfájlt olvasásra, és entryNameEncoding be van állítva null, a bejegyzésnevek és a megjegyzések a következő szabályok szerint lesznek dekódolva:

  • Ha a nyelvi kódolás jelzője (a helyi fájlfejléc általános célú bitjelölőjében) nincs beállítva, a rendszer az aktuális rendszer alapértelmezett kódlapját használja a bejegyzés nevének és megjegyzésének dekódolásához.
  • A nyelvi kódolási jelző beállításakor az UTF-8 a bejegyzés nevének és megjegyzésének dekódolására szolgál.

Amikor megnyit egy zip-archívumfájlt olvasásra, és entryNameEncoding nem a következő értékre nullvan beállítva, a bejegyzésneveket és a megjegyzéseket a rendszer az alábbi szabályok szerint dekódolja:

  • Ha a nyelvi kódolási jelző nincs beállítva, a megadott entryNameEncoding érték a bejegyzés nevének és megjegyzésének dekódolására szolgál.
  • A nyelvi kódolási jelző beállításakor az UTF-8 a bejegyzés nevének és megjegyzésének dekódolására szolgál.

Ha archivált fájlokba ír, és entryNameEncoding a beállítás értéke nulla következő szabályok szerint van beállítva, a bejegyzésnevek és a megjegyzések kódolása a következő szabályok szerint történik:

  • Az ASCII-tartományon kívüli karaktereket tartalmazó bejegyzésnevekhez vagy megjegyzésekhez be van állítva a nyelvkódoló jelző, a bejegyzésnevek és megjegyzések pedig az UTF-8 használatával vannak kódolva.
  • A csak ASCII-karaktereket tartalmazó bejegyzésnevek vagy megjegyzések esetében nincs beállítva a nyelvkódoló jelző, a bejegyzésneveket és a megjegyzéseket pedig az aktuális rendszer alapértelmezett kódlapja kódolja.

Ha archivált fájlokat ír, és entryNameEncoding nem egy értékre nullvan beállítva, a megadott entryNameEncoding érték a bejegyzésneveket és a megjegyzéseket bájtokra kódolja. A nyelvi kódolás jelzője (a helyi fájlfejléc általános célú bitjelölőjében) csak akkor van beállítva, ha a megadott kódolás UTF-8 kódolás.

A következőre érvényes: