ZipArchiveEntry Klasse

Definition

Stellt eine komprimierte Datei in einem Zip-Archiv dar.

public ref class ZipArchiveEntry
public class ZipArchiveEntry
type ZipArchiveEntry = class
Public Class ZipArchiveEntry
Vererbung
ZipArchiveEntry

Hinweise

Ein ZIP-Archiv enthält einen Eintrag für jede komprimierte Datei. Mit ZipArchiveEntry der -Klasse können Sie die Eigenschaften eines Eintrags untersuchen und den Eintrag öffnen oder löschen. Wenn Sie einen Eintrag öffnen, können Sie die komprimierte Datei ändern, indem Sie in den Stream für diese komprimierte Datei schreiben.

Die Methoden zum Bearbeiten von ZIP-Archiven und deren Dateieinträgen sind auf drei Klassen verteilt: ZipFile, ZipArchive und ZipArchiveEntry.

An... Lösung
Erstellen eines ZIP-Archivs aus einem Verzeichnis ZipFile.CreateFromDirectory
Extrahieren des Inhalts eines ZIP-Archivs in ein Verzeichnis ZipFile.ExtractToDirectory
Hinzufügen neuer Dateien zu einem vorhandenen ZIP-Archiv ZipArchive.CreateEntry
Abrufen einer Datei in einem ZIP-Archiv ZipArchive.GetEntry
Abrufen aller Dateien in einem ZIP-Archiv ZipArchive.Entries
So öffnen Sie einen Stream für eine einzelne Datei, die in einem ZIP-Archiv enthalten ist ZipArchiveEntry.Open
Löschen einer Datei aus einem ZIP-Archiv ZipArchiveEntry.Delete

Wenn Sie auf die System.IO.Compression.FileSystem Assembly in Ihrem Projekt verweisen, können Sie auf zwei Erweiterungsmethoden für die ZipArchiveEntry -Klasse zugreifen. Diese Methoden sind ExtractToFile(ZipArchiveEntry, String) und ExtractToFile(ZipArchiveEntry, String, Boolean), und sie ermöglichen es Ihnen, den Inhalt des Eintrags in einer Datei zu dekomprimieren. Die System.IO.Compression.FileSystem Assembly ist in Windows 8 nicht verfügbar. In Windows 8.x Store-Apps können Sie den Inhalt eines Archivs mit DeflateStream oder GZipStreamdekomprimieren, oder Sie können die Windows-Runtime Typen Compressor und Decompressor zum Komprimieren und Dekomprimieren von Dateien verwenden.

Beispiele

Das erste Beispiel zeigt, wie Sie einen neuen Eintrag in einem ZIP-Archiv erstellen und in diesen schreiben.

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 zweite Beispiel zeigt, wie die ExtractToFile(ZipArchiveEntry, String) Erweiterungsmethode verwendet wird. Sie müssen auf die System.IO.Compression.FileSystem Assembly in Ihrem Projekt verweisen, damit der Code ausgeführt werden kann.

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

Eigenschaften

Archive

Ruft das Zip-Archiv ab, zu dem der Eintrag gehört.

Comment

Ruft den optionalen Eintragskommentar ab oder legt diese fest.

CompressedLength

Ruft die komprimierte Größe des unkomprimierten Eintrags im ZIP-Archiv ab.

Crc32

Die zyklische 32-Bit-Redundanzprüfung (Cyclic Redundant Check, CRC).

ExternalAttributes

Betriebssystem- und anwendungsspezifische Dateiattribute.

FullName

Ruft den relativen Pfad des Eintrags im ZIP-Archiv ab.

IsEncrypted

Ruft einen Wert ab, der angibt, ob der Eintrag verschlüsselt ist.

LastWriteTime

Ruft den letzten Zeitpunkt ab, zu dem der Eintrag im Zip-Archiv geändert wurde, oder legt diesen fest.

Length

Ruft die Größe des unkomprimierten Eintrags im ZIP-Archiv ab.

Name

Ruft den Dateinamen des Eintrags im ZIP-Archiv ab.

Methoden

Delete()

Löscht den Eintrag aus dem Zip-Archiv.

Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
GetHashCode()

Fungiert als Standardhashfunktion.

(Geerbt von Object)
GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
Open()

Öffnet den Eintrag aus dem Zip-Archiv.

ToString()

Ruft den relativen Pfad des Eintrags im Zip-Archiv ab.

Erweiterungsmethoden

ExtractToFile(ZipArchiveEntry, String)

Extrahiert einen Eintrag im ZIP-Archiv in eine Datei.

ExtractToFile(ZipArchiveEntry, String, Boolean)

Extrahiert einen Eintrag im ZIP-Archiv in eine Datei und überschreibt optional eine vorhandene Datei gleichen Namens.

Gilt für: