ZipFileExtensions Kelas

Definisi

Menyediakan metode ekstensi untuk ZipArchive kelas dan ZipArchiveEntry .

public ref class ZipFileExtensions abstract sealed
public static class ZipFileExtensions
type ZipFileExtensions = class
Public Module ZipFileExtensions
Warisan
ZipFileExtensions

Keterangan

Kelas ZipFileExtensions hanya berisi metode statis yang memperluas ZipArchive kelas dan ZipArchiveEntry . Anda tidak membuat instans kelas; sebagai gantinya ZipFileExtensions , Anda menggunakan metode ini dari instans ZipArchive atau ZipArchiveEntry.

Untuk menggunakan metode ekstensi, Anda harus mereferensikan perakitan System.IO.Compression.FileSystem dalam proyek Anda. Rakitan System.IO.Compression.FileSystem tidak tersedia di aplikasi Windows 8.x Store. Oleh karena itu, kelas ZipFileExtensions dan ZipFile (keduanya berada di assembly System.IO.Compression.FileSystem) tidak tersedia di aplikasi Windows 8.x Store. Di aplikasi Windows 8.x Store, Anda bekerja dengan file terkompresi dengan menggunakan metode di ZipArchive, ZipArchiveEntry, DeflateStream, dan GZipStream.

Kelas ZipFileExtensions berisi empat metode yang diperluas ZipArchive:

Kelas ZipFileExtensions berisi dua metode yang diperluas ZipArchiveEntry:

Contoh

Contoh berikut menunjukkan cara membuat entri baru dalam arsip zip dari file yang ada, dan mengekstrak konten arsip ke direktori.

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

Contoh berikut menunjukkan cara melakukan iterasi melalui konten arsip zip dan mengekstrak file yang memiliki ekstensi .txt.

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

class Program
{
    static void Main(string[] args)
    {
        string zipPath = @".\result.zip";

        Console.WriteLine("Provide path where to extract the zip file:");
        string extractPath = Console.ReadLine();

        // Normalizes the path.
        extractPath = Path.GetFullPath(extractPath);

        // Ensures that the last character on the extraction path
        // is the directory separator char.
        // Without this, a malicious zip file could try to traverse outside of the expected
        // extraction path.
        if (!extractPath.EndsWith(Path.DirectorySeparatorChar.ToString(), StringComparison.Ordinal))
            extractPath += Path.DirectorySeparatorChar;

        using (ZipArchive archive = ZipFile.OpenRead(zipPath))
        {
            foreach (ZipArchiveEntry entry in archive.Entries)
            {
                if (entry.FullName.EndsWith(".txt", StringComparison.OrdinalIgnoreCase))
                {
                    // Gets the full path to ensure that relative segments are removed.
                    string destinationPath = Path.GetFullPath(Path.Combine(extractPath, entry.FullName));

                    // Ordinal match is safest, case-sensitive volumes can be mounted within volumes that
                    // are case-insensitive.
                    if (destinationPath.StartsWith(extractPath, StringComparison.Ordinal))
                        entry.ExtractToFile(destinationPath);
                }
            }
        }
    }
}
Imports System.IO
Imports System.IO.Compression

Module Module1

    Sub Main()
        Dim zipPath As String = ".\result.zip"

        Console.WriteLine("Provide path where to extract the zip file:")
        Dim extractPath As String = Console.ReadLine()

        ' Normalizes the path.
        extractPath = Path.GetFullPath(extractPath)

        ' Ensures that the last character on the extraction path
        ' is the directory separator char. 
        ' Without this, a malicious zip file could try to traverse outside of the expected
        ' extraction path.
        If Not extractPath.EndsWith(Path.DirectorySeparatorChar.ToString(), StringComparison.Ordinal) Then
            extractPath += Path.DirectorySeparatorChar
        End If

        Using archive As ZipArchive = ZipFile.OpenRead(zipPath)
            For Each entry As ZipArchiveEntry In archive.Entries
                If entry.FullName.EndsWith(".txt", StringComparison.OrdinalIgnoreCase) Then

                    ' Gets the full path to ensure that relative segments are removed.
                    Dim destinationPath As String = Path.GetFullPath(Path.Combine(extractPath, entry.FullName))
                    
                    ' Ordinal match is safest, case-sensitive volumes can be mounted within volumes that
                    ' are case-insensitive.
                    If destinationPath.StartsWith(extractPath, StringComparison.Ordinal) Then 
                        entry.ExtractToFile(destinationPath)
                    End If

                End If
            Next
        End Using
    End Sub

End Module

Metode

Nama Deskripsi
CreateEntryFromFile(ZipArchive, String, String, CompressionLevel)

Mengarsipkan file dengan mengompresinya menggunakan tingkat kompresi yang ditentukan dan menambahkannya ke arsip zip.

CreateEntryFromFile(ZipArchive, String, String)

Mengarsipkan file dengan mengompresinya dan menambahkannya ke arsip zip.

CreateEntryFromFileAsync(ZipArchive, String, String, CancellationToken)

Secara asinkron menambahkan file dari sistem file ke arsip dengan nama entri yang ditentukan.

CreateEntryFromFileAsync(ZipArchive, String, String, CompressionLevel, CancellationToken)

Secara asinkron menambahkan file dari sistem file ke arsip dengan nama entri yang ditentukan.

ExtractToDirectory(ZipArchive, String, Boolean)

Mengekstrak semua file dalam arsip ke direktori pada sistem file.

ExtractToDirectory(ZipArchive, String)

Mengekstrak semua file dalam arsip zip ke direktori pada sistem file.

ExtractToDirectoryAsync(ZipArchive, String, Boolean, CancellationToken)

Mengekstrak semua file dalam arsip ke direktori pada sistem file. Direktori yang ditentukan mungkin sudah ada.

ExtractToDirectoryAsync(ZipArchive, String, CancellationToken)

Secara asinkron mengekstrak semua file dalam arsip ke direktori pada sistem file. Direktori yang ditentukan sudah bisa ada.

ExtractToFile(ZipArchiveEntry, String, Boolean)

Mengekstrak entri dalam arsip zip ke file, dan secara opsional menimpa file yang ada yang memiliki nama yang sama.

ExtractToFile(ZipArchiveEntry, String)

Mengekstrak entri dalam arsip zip ke file.

ExtractToFileAsync(ZipArchiveEntry, String, Boolean, CancellationToken)

Secara asinkron membuat file pada sistem file dengan konten entri dan nama yang ditentukan.

ExtractToFileAsync(ZipArchiveEntry, String, CancellationToken)

Secara asinkron membuat file pada sistem file dengan konten entri dan nama yang ditentukan.

Berlaku untuk