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 der ZipArchiveEntry 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 Datenstrom für diese komprimierte Datei schreiben.

Die Methoden zum Bearbeiten von ZIP-Archiven und deren Dateieinträgen sind in drei Klassen verteilt: ZipFileund ZipArchiveZipArchiveEntry.

An... Verwenden...
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 Datenstrom in einer einzelnen 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 eine Datei zu dekomprimieren. Die assembly System.IO.Compression.FileSystem ist in Windows 8 nicht verfügbar. In Windows 8.x Store-Apps können Sie den Inhalt eines Archivs dekomprimieren, indem Sie DeflateStream oder GZipStream verwenden oder die Windows-Runtime Typen <xref:Windows.Storage.Compression.Compressor> und <xref:Windows.Storage.Compression.Decompressor> zum Komprimieren und Dekomprimieren von Dateien verwenden.

Examples

Das erste Beispiel zeigt, wie Sie einen neuen Eintrag in einem ZIP-Archiv erstellen und in dieses 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

Name Beschreibung
Archive

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

Comment

Dient zum Abrufen oder Festlegen des optionalen Eintragskommentars.

CompressedLength

Ruft die komprimierte Größe( in Byte) des Eintrags im ZIP-Archiv ab.

CompressionMethod

Stellt eine komprimierte Datei in einem ZIP-Archiv dar.

Crc32

Die 32-Bit-Zyklische redundante Prüfung.

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 ab oder legt fest, wenn der Eintrag im ZIP-Archiv zuletzt geändert wurde.

Length

Ruft die nicht komprimierte Größe des Eintrags im ZIP-Archiv in Bytes ab.

Name

Ruft den Dateinamen des Eintrags im ZIP-Archiv ab.

Methoden

Name Beschreibung
Delete()

Löscht den Eintrag aus dem ZIP-Archiv.

Equals(Object)

Bestimmt, ob das angegebene Objekt dem aktuellen Objekt entspricht.

(Geerbt von Object)
GetHashCode()

Dient als Standardhashfunktion.

(Geerbt von Object)
GetType()

Ruft die Type der aktuellen Instanz ab.

(Geerbt von Object)
MemberwiseClone()

Erstellt eine flache Kopie der aktuellen Object.

(Geerbt von Object)
Open()

Öffnet den Eintrag aus dem ZIP-Archiv.

Open(FileAccess)

Stellt eine komprimierte Datei in einem ZIP-Archiv dar.

OpenAsync(CancellationToken)

Öffnet den Eintrag asynchron.

OpenAsync(FileAccess, CancellationToken)

Stellt eine komprimierte Datei in einem ZIP-Archiv dar.

ToString()

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

Erweiterungsmethoden

Name Beschreibung
ExtractToFile(ZipArchiveEntry, String, Boolean)

Extrahiert einen Eintrag im ZIP-Archiv in eine Datei und überschreibt optional eine vorhandene Datei mit demselben Namen.

ExtractToFile(ZipArchiveEntry, String)

Extrahiert einen Eintrag im ZIP-Archiv in eine Datei.

ExtractToFileAsync(ZipArchiveEntry, String, Boolean, CancellationToken)

Erstellt asynchron eine Datei im Dateisystem mit dem Inhalt des Eintrags und dem angegebenen Namen.

ExtractToFileAsync(ZipArchiveEntry, String, CancellationToken)

Erstellt asynchron eine Datei im Dateisystem mit dem Inhalt des Eintrags und dem angegebenen Namen.

Gilt für: