Share via


ZipFile.Open Metode

Definisi

Membuka arsip zip pada jalur yang ditentukan dan dalam mode yang ditentukan.

Overload

Open(String, ZipArchiveMode, Encoding)

Membuka arsip zip di jalur yang ditentukan, dalam mode yang ditentukan, dan dengan menggunakan pengodean karakter yang ditentukan untuk nama entri.

Open(String, ZipArchiveMode)

Membuka arsip zip pada jalur yang ditentukan dan dalam mode yang ditentukan.

Open(String, ZipArchiveMode, Encoding)

Sumber:
ZipFile.Create.cs
Sumber:
ZipFile.Create.cs
Sumber:
ZipFile.Create.cs

Membuka arsip zip di jalur yang ditentukan, dalam mode yang ditentukan, dan dengan menggunakan pengodean karakter yang ditentukan untuk nama entri.

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

Parameter

archiveFileName
String

Jalur ke arsip yang akan dibuka, ditentukan sebagai jalur relatif atau absolut. Jalur relatif ditafsirkan relatif terhadap direktori kerja saat ini.

mode
ZipArchiveMode

Salah satu nilai enumerasi yang menentukan tindakan yang diizinkan pada entri dalam arsip yang dibuka.

entryNameEncoding
Encoding

Pengodean yang digunakan saat membaca atau menulis nama entri dalam arsip ini. Tentukan nilai untuk parameter ini hanya ketika pengodean diperlukan untuk interoperabilitas dengan alat arsip zip dan pustaka yang tidak mendukung pengodean UTF-8 untuk nama entri.

Mengembalikan

Arsip zip yang dibuka.

Pengecualian

archiveFileName adalah Empty, hanya berisi spasi kosong, atau berisi setidaknya satu karakter yang tidak valid.

-atau-

entryNameEncoding diatur ke pengodean Unicode selain UTF-8.

archiveFileNameadalah null.

Dalam archiveFileName, jalur yang ditentukan, nama file, atau keduanya melebihi panjang maksimum yang ditentukan sistem.

archiveFileName tidak valid atau tidak ada (misalnya, ada di drive yang tidak dipetakan).

archiveFileName tidak dapat dibuka.

-atau-

mode diatur ke Create, tetapi file yang ditentukan di archiveFileName sudah ada.

-atau-

Terjadi kesalahan I/O yang tidak ditentukan saat membuka file.

archiveFileName menentukan direktori.

-atau-

Pemanggil tidak memiliki izin yang diperlukan untuk mengakses file yang ditentukan dalam archiveFileName.

mode menentukan nilai yang tidak valid.

mode diatur ke Read, tetapi file yang ditentukan di archiveFileName tidak ditemukan.

archiveFileName berisi format yang tidak valid.

archiveFileName tidak dapat ditafsirkan sebagai arsip zip.

-atau-

mode adalah Update, tetapi entri hilang atau rusak dan tidak dapat dibaca.

-atau-

mode adalah Update, tetapi entri terlalu besar untuk masuk ke dalam memori.

Keterangan

Saat Anda mengatur mode parameter ke Read, arsip dibuka dengan FileMode.Open sebagai nilai mode file. Jika arsip tidak ada, FileNotFoundException pengecualian akan dilemparkan. Mengatur parameter ke modeRead setara dengan memanggil OpenRead metode .

Saat Anda mengatur mode parameter ke Create, arsip dibuka dengan FileMode.CreateNew sebagai nilai mode file. Jika arsip sudah ada, akan IOException dilemparkan.

Saat Anda mengatur mode parameter ke Update, arsip dibuka dengan FileMode.OpenOrCreate sebagai nilai mode file. Jika arsip ada, arsip akan dibuka. Entri yang ada dapat dimodifikasi dan entri baru dapat dibuat. Jika arsip tidak ada, arsip baru dibuat; namun, membuat arsip zip dalam Update mode tidak seefisien membuatnya dalam Create mode .

Saat Anda membuka file arsip zip untuk dibaca dan entryNameEncoding diatur ke null, nama entri didekodekan sesuai dengan aturan berikut:

  • Ketika bendera pengodean bahasa (dalam bendera bit tujuan umum header file lokal) tidak diatur, halaman kode default sistem saat ini digunakan untuk mendekode nama entri.

  • Ketika bendera pengodean bahasa diatur, UTF-8 digunakan untuk mendekode nama entri.

Saat Anda membuka file arsip zip untuk dibaca dan entryNameEncoding diatur ke nilai selain null, nama entri didekodekan sesuai dengan aturan berikut:

  • Ketika bendera pengodean bahasa tidak diatur, yang ditentukan entryNameEncoding digunakan untuk mendekode nama entri.

  • Ketika bendera pengodean bahasa diatur, UTF-8 digunakan untuk mendekode nama entri.

Ketika Anda menulis ke file arsip dan entryNameEncoding diatur ke null, nama entri dikodekan sesuai dengan aturan berikut:

  • Untuk nama entri yang berisi karakter di luar rentang ASCII, bendera pengodean bahasa diatur, dan nama entri dikodekan dengan menggunakan UTF-8.

  • Untuk nama entri yang hanya berisi karakter ASCII, bendera pengodean bahasa tidak diatur, dan nama entri dikodekan dengan menggunakan halaman kode default sistem saat ini.

Ketika Anda menulis ke file arsip dan entryNameEncoding diatur ke nilai selain null, yang ditentukan digunakan untuk mengodekan entryNameEncoding nama entri ke dalam byte. Bendera pengodean bahasa (dalam bendera bit tujuan umum header file lokal) diatur hanya ketika pengodean yang ditentukan adalah pengodean UTF-8.

Berlaku untuk

Open(String, ZipArchiveMode)

Sumber:
ZipFile.Create.cs
Sumber:
ZipFile.Create.cs
Sumber:
ZipFile.Create.cs

Membuka arsip zip pada jalur yang ditentukan dan dalam mode yang ditentukan.

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

Parameter

archiveFileName
String

Jalur ke arsip yang akan dibuka, ditentukan sebagai jalur relatif atau absolut. Jalur relatif ditafsirkan relatif terhadap direktori kerja saat ini.

mode
ZipArchiveMode

Salah satu nilai enumerasi yang menentukan tindakan yang diizinkan pada entri dalam arsip yang dibuka.

Mengembalikan

Arsip zip yang dibuka.

Pengecualian

archiveFileName adalah Empty, hanya berisi spasi kosong, atau berisi setidaknya satu karakter yang tidak valid.

archiveFileNameadalah null.

Dalam archiveFileName, jalur yang ditentukan, nama file, atau keduanya melebihi panjang maksimum yang ditentukan sistem.

archiveFileName tidak valid atau tidak ada (misalnya, ada di drive yang tidak dipetakan).

archiveFileName tidak dapat dibuka.

-atau-

mode diatur ke Create, tetapi file yang ditentukan di archiveFileName sudah ada.

-atau-

Terjadi kesalahan I/O yang tidak ditentukan saat membuka file.

archiveFileName menentukan direktori.

-atau-

Pemanggil tidak memiliki izin yang diperlukan untuk mengakses file yang ditentukan dalam archiveFileName.

mode menentukan nilai yang tidak valid.

mode diatur ke Read, tetapi file yang ditentukan di archiveFileName tidak ditemukan.

archiveFileName berisi format yang tidak valid.

archiveFileName tidak dapat ditafsirkan sebagai arsip zip.

-atau-

mode adalah Update, tetapi entri hilang atau rusak dan tidak dapat dibaca.

-atau-

mode adalah Update, tetapi entri terlalu besar untuk masuk ke dalam memori.

Contoh

Contoh berikut menunjukkan cara membuka arsip zip dalam mode pembaruan dan menambahkan entri ke arsip.

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

Keterangan

Saat Anda mengatur mode parameter ke Read, arsip dibuka dengan Open dari FileMode enumerasi sebagai nilai mode file. Jika arsip tidak ada, FileNotFoundException pengecualian akan dilemparkan. Mengatur parameter ke modeRead setara dengan memanggil OpenRead metode .

Saat Anda mengatur mode parameter ke Create, arsip dibuka dengan FileMode.CreateNew sebagai nilai mode file. Jika arsip sudah ada, akan IOException dilemparkan.

Saat Anda mengatur mode parameter ke Update, arsip dibuka dengan FileMode.OpenOrCreate sebagai nilai mode file. Jika arsip ada, arsip akan dibuka. Entri yang ada dapat dimodifikasi dan entri baru dapat dibuat. Jika arsip tidak ada, arsip baru dibuat; namun, membuat arsip zip dalam Update mode tidak seefisien membuatnya dalam Create mode .

Berlaku untuk