ZipArchive ZipArchive ZipArchive ZipArchive Class

Definition

Stellt ein Paket komprimierter Dateien im Zip-Archiv-Format dar.Represents a package of compressed files in the zip archive format.

public ref class ZipArchive : IDisposable
public class ZipArchive : IDisposable
type ZipArchive = class
    interface IDisposable
Public Class ZipArchive
Implements IDisposable
Vererbung
ZipArchiveZipArchiveZipArchiveZipArchive
Implementiert

Beispiele

Das erste Beispiel zeigt, wie ein neuer Eintrag erstellt und mithilfe eines Datenstroms in sie schreiben.The first example shows how to create a new entry and write to it by using a stream.

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

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            using (FileStream zipToOpen = new FileStream(@"c:\users\exampleuser\release.zip", FileMode.Open))
            {
                using (ZipArchive archive = new ZipArchive(zipToOpen, ZipArchiveMode.Update))
                {
                    ZipArchiveEntry readmeEntry = archive.CreateEntry("Readme.txt");
                    using (StreamWriter writer = new StreamWriter(readmeEntry.Open()))
                    {
                            writer.WriteLine("Information about this package.");
                            writer.WriteLine("========================");
                    }
                }
            }
        }
    }
}
Imports System.IO
Imports System.IO.Compression

Module Module1

    Sub Main()
        Using zipToOpen As FileStream = New FileStream("c:\users\exampleuser\release.zip", FileMode.Open)
            Using archive As ZipArchive = New ZipArchive(zipToOpen, ZipArchiveMode.Update)
                Dim readmeEntry As ZipArchiveEntry = archive.CreateEntry("Readme.txt")
                Using writer As StreamWriter = New StreamWriter(readmeEntry.Open())
                    writer.WriteLine("Information about this package.")
                    writer.WriteLine("========================")
                End Using
            End Using
        End Using
    End Sub

End Module

Das folgende Beispiel zeigt, wie Sie die Zip-Archive öffnen, und die Auflistung von Einträgen zu durchlaufen.The following example shows how to open a zip archive and iterate through the collection of entries.

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

Das dritte Beispiel zeigt, wie Sie Erweiterungsmethoden verwenden, erstellen einen neuen Eintrag im Zip-Archiv aus einer vorhandenen Datei, und Extrahieren der Archivinhalte.The third example shows how to use extension methods to create a new entry in a zip archive from an existing file and extract the archive contents. Sie müssen verweisen die System.IO.Compression.FileSystem Assembly zum Ausführen des Codes.You must reference the System.IO.Compression.FileSystem assembly to execute the code.

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

Hinweise

Die Methoden zum Bearbeiten von Zip-Archive und ihre Dateieinträge auf drei Klassen verteilt sind: ZipFile, ZipArchive, und ZipArchiveEntry.The methods for manipulating zip archives and their file entries are spread across three classes: ZipFile, ZipArchive, and ZipArchiveEntry.

BeschreibungTo MitUse
Erstellen Sie eine Zip-Archiv aus einem VerzeichnisCreate a zip archive from a directory ZipFile.CreateFromDirectory
Extrahieren Sie den Inhalt der Zip-Archiv in ein VerzeichnisExtract the contents of a zip archive to a directory ZipFile.ExtractToDirectory
Fügen Sie neue Dateien hinzu, um eine vorhandene Zip-ArchivAdd new files to an existing zip archive ZipArchive.CreateEntry
Rufen Sie eine Datei aus einer Zip-ArchivRetrieve a file from a zip archive ZipArchive.GetEntry
Rufen Sie alle Dateien aus einer Zip-ArchivRetrieve all the files from a zip archive ZipArchive.Entries
Öffnet einen Stream für eine einzelne Datei in eine Zip-Archiv enthaltenOpen a stream to a single file contained in a zip archive ZipArchiveEntry.Open
Löschen einer Datei aus einem Zip-ArchivDelete a file from a zip archive ZipArchiveEntry.Delete

Wenn Sie einen neuen Eintrag erstellen, wird die Datei komprimierte und Zip-Paket hinzugefügt.When you create a new entry, the file is compressed and added to the zip package. Die CreateEntry Methode ermöglicht es Ihnen, eine Verzeichnishierarchie an, wenn Sie den Eintrag hinzufügen.The CreateEntry method enables you to specify a directory hierarchy when adding the entry. Sie enthalten den relativen Pfad des neuen Eintrags im Zip-Paket.You include the relative path of the new entry within the zip package. Erstellen Sie z. B. einen neuen Eintrag mit dem relativen Pfad der AddedFolder\NewFile.txt erstellt eine komprimierte Textdatei in ein Verzeichnis namens AddedFolder.For example, creating a new entry with a relative path of AddedFolder\NewFile.txt creates a compressed text file in a directory named AddedFolder.

Wenn Sie auf die System.IO.Compression.FileSystem Assembly in Ihrem Projekt können Sie vier Erweiterungsmethoden zugreifen (aus der ZipFileExtensions Klasse) für die ZipArchive Klasse: CreateEntryFromFile(ZipArchive, String, String), CreateEntryFromFile(ZipArchive, String, String, CompressionLevel), ExtractToDirectory(ZipArchive, String), und ExtractToDirectory(ZipArchive, String, Boolean) (verfügbar in .NET Core 2.0 und höheren Versionen).If you reference the System.IO.Compression.FileSystem assembly in your project, you can access four extension methods (from the ZipFileExtensions class) for the ZipArchive class: CreateEntryFromFile(ZipArchive, String, String), CreateEntryFromFile(ZipArchive, String, String, CompressionLevel), ExtractToDirectory(ZipArchive, String), and ExtractToDirectory(ZipArchive, String, Boolean) (available in .NET Core 2.0 and later versions). Diese Erweiterungsmethoden können Sie zum Komprimieren und Dekomprimieren den Inhalt des Eintrags, der eine Datei.These extension methods enable you to compress and decompress the contents of the entry to a file. Die System.IO.Compression.FileSystem Assembly ist nicht verfügbar für Windows 8.x StoreWindows 8.x Store apps.The System.IO.Compression.FileSystem assembly is not available for Windows 8.x StoreWindows 8.x Store apps. In Windows 8.x StoreWindows 8.x Store -apps können Sie zu komprimieren und Dekomprimieren von Dateien mithilfe der DeflateStream oder GZipStream -Klasse, oder Sie können die Windows-RuntimeWindows Runtime Typen von komprimieren und Dekomprimierungsprogramm.In Windows 8.x StoreWindows 8.x Store apps, you can compress and decompress files by using the DeflateStream or GZipStream class, or you can use the Windows-RuntimeWindows Runtime types Compressor and Decompressor.

Konstruktoren

ZipArchive(Stream) ZipArchive(Stream) ZipArchive(Stream) ZipArchive(Stream)

Initialisiert eine neue Instanz der dem ZipArchive Klasse aus dem angegebenen Stream.Initializes a new instance of the ZipArchive class from the specified stream.

ZipArchive(Stream, ZipArchiveMode) ZipArchive(Stream, ZipArchiveMode) ZipArchive(Stream, ZipArchiveMode) ZipArchive(Stream, ZipArchiveMode)

Initialisiert eine neue Instanz der dem ZipArchive -Klasse aus dem angegebenen Stream und mit dem angegebenen Modus.Initializes a new instance of the ZipArchive class from the specified stream and with the specified mode.

ZipArchive(Stream, ZipArchiveMode, Boolean) ZipArchive(Stream, ZipArchiveMode, Boolean) ZipArchive(Stream, ZipArchiveMode, Boolean) ZipArchive(Stream, ZipArchiveMode, Boolean)

Initialisiert eine neue Instanz der dem ZipArchive Klasse für den angegebenen Stream und den angegebenen Modus, und optional den Stream geöffnet bleibt.Initializes a new instance of the ZipArchive class on the specified stream for the specified mode, and optionally leaves the stream open.

ZipArchive(Stream, ZipArchiveMode, Boolean, Encoding) ZipArchive(Stream, ZipArchiveMode, Boolean, Encoding) ZipArchive(Stream, ZipArchiveMode, Boolean, Encoding) ZipArchive(Stream, ZipArchiveMode, Boolean, Encoding)

Initialisiert eine neue Instanz der dem ZipArchive Klasse für den angegebenen Stream für den angegebenen Modus und verwendet die angegebene Codierung für Eintragsnamen und lässt den Stream optional geöffnet.Initializes a new instance of the ZipArchive class on the specified stream for the specified mode, uses the specified encoding for entry names, and optionally leaves the stream open.

Eigenschaften

Entries Entries Entries Entries

Ruft die Auflistung von Einträgen ab, die das ZIP-Archiv momentan enthält.Gets the collection of entries that are currently in the zip archive.

Mode Mode Mode Mode

Ruft einen Wert ab, der den Typ der Aktion beschreibt, die das ZIP-Archiv für Einträge ausführen kann.Gets a value that describes the type of action the zip archive can perform on entries.

Methoden

CreateEntry(String) CreateEntry(String) CreateEntry(String) CreateEntry(String)

Erstellt einen leeren Eintrag, der den angegebenen Pfad und Eintragsnamen im ZIP-Archiv Ebene verwendet.Creates an empty entry that has the specified path and entry name in the zip archive.

CreateEntry(String, CompressionLevel) CreateEntry(String, CompressionLevel) CreateEntry(String, CompressionLevel) CreateEntry(String, CompressionLevel)

Erstellt einen leeren Eintrag, der den angegebenen Eintragsnamen und die Komprimierung im ZIP-Archiv Ebene verwendet.Creates an empty entry that has the specified entry name and compression level in the zip archive.

Dispose() Dispose() Dispose() Dispose()

Gibt alle von der aktuellen Instanz der ZipArchive-Klasse verwendeten Ressourcen frei.Releases the resources used by the current instance of the ZipArchive class.

Dispose(Boolean) Dispose(Boolean) Dispose(Boolean) Dispose(Boolean)

Wird aufgerufen, indem die Dispose() und Finalize() Methoden zum Freigeben von nicht verwalteten Ressourcen von der aktuellen Instanz von der ZipArchive Klasse, beendet das Schreiben des Archivs und optional die verwalteten Ressourcen frei.Called by the Dispose() and Finalize() methods to release the unmanaged resources used by the current instance of the ZipArchive class, and optionally finishes writing the archive and releases the managed resources.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist.Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetEntry(String) GetEntry(String) GetEntry(String) GetEntry(String)

Ruft einen Wrapper für den angegebenen Eintrag im Zip-Archiv ab.Retrieves a wrapper for the specified entry in the zip archive.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Fungiert als Standardhashfunktion.Serves as the default hash function.

(Inherited from Object)
GetType() GetType() GetType() GetType()

Ruft den Type der aktuellen Instanz ab.Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.Returns a string that represents the current object.

(Inherited from Object)

Extension Methods

CreateEntryFromFile(ZipArchive, String, String) CreateEntryFromFile(ZipArchive, String, String) CreateEntryFromFile(ZipArchive, String, String) CreateEntryFromFile(ZipArchive, String, String)

Archiviert eine Datei durch Komprimieren und Hinzufügen zum Zip-Archiv.Archives a file by compressing it and adding it to the zip archive.

CreateEntryFromFile(ZipArchive, String, String, CompressionLevel) CreateEntryFromFile(ZipArchive, String, String, CompressionLevel) CreateEntryFromFile(ZipArchive, String, String, CompressionLevel) CreateEntryFromFile(ZipArchive, String, String, CompressionLevel)

Archiviert eine Datei durch Komprimieren mithilfe der angegebenen Komprimierungsebene und Hinzufügen zum Zip-Archiv.Archives a file by compressing it using the specified compression level and adding it to the zip archive.

ExtractToDirectory(ZipArchive, String) ExtractToDirectory(ZipArchive, String) ExtractToDirectory(ZipArchive, String) ExtractToDirectory(ZipArchive, String)

Extrahiert alle Dateien im ZIP-Archiv in ein Verzeichnis im Dateisystem.Extracts all the files in the zip archive to a directory on the file system.

ExtractToDirectory(ZipArchive, String, Boolean) ExtractToDirectory(ZipArchive, String, Boolean) ExtractToDirectory(ZipArchive, String, Boolean) ExtractToDirectory(ZipArchive, String, Boolean)

Extrahiert alle Dateien im Archiv in ein Verzeichnis im Dateisystem.Extracts all of the files in the archive to a directory on the file system.

Gilt für:

Siehe auch