ZipArchiveEntry Třída

Definice

Představuje komprimovaný soubor v archivu zip.

public ref class ZipArchiveEntry
public class ZipArchiveEntry
type ZipArchiveEntry = class
Public Class ZipArchiveEntry
Dědičnost
ZipArchiveEntry

Poznámky

Archiv zip obsahuje položku pro každý komprimovaný soubor. Třída ZipArchiveEntry umožňuje prozkoumat vlastnosti položky a otevřít nebo odstranit položku. Když otevřete položku, můžete komprimovaný soubor upravit zápisem do datového proudu pro tento komprimovaný soubor.

Metody manipulace s archivy zip a jejich záznamy souboru jsou rozloženy do tří tříd: ZipFilea ZipArchiveZipArchiveEntry.

Pro... Použít...
Vytvoření archivu zip z adresáře ZipFile.CreateFromDirectory
Extrahování obsahu archivu zip do adresáře ZipFile.ExtractToDirectory
Přidání nových souborů do existujícího archivu zip ZipArchive.CreateEntry
Načtení souboru v archivu zip ZipArchive.GetEntry
Načtení všech souborů v archivu zip ZipArchive.Entries
Otevření datového proudu pro jednotlivý soubor obsažený v archivu zip ZipArchiveEntry.Open
Odstranění souboru z archivu zip ZipArchiveEntry.Delete

Pokud odkazujete na System.IO.Compression.FileSystem sestavení v projektu, můžete získat přístup ke dvěma rozšiřujícím metodám třídy ZipArchiveEntry . Tyto metody jsou ExtractToFile(ZipArchiveEntry, String) a ExtractToFile(ZipArchiveEntry, String, Boolean)a umožňují dekomprimovat obsah položky do souboru. Sestavení System.IO.Compression.FileSystem není v Windows 8 k dispozici. V aplikacích Windows 8.x Store můžete obsah archivu dekomprimovat pomocí DeflateStream nebo GZipStream nebo můžete použít typy prostředí Windows Runtime <xref:Windows.Storage.Compression.Compressor> a <xref:Windows.Storage.Compression.Decompressor> komprimovat a dekomprimovat soubory.

Příklady

První příklad ukazuje, jak vytvořit novou položku v archivu zip a zapisovat do něj.

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

Druhý příklad ukazuje, jak použít metodu ExtractToFile(ZipArchiveEntry, String) rozšíření. Na sestavení v projektu musíte odkazovat System.IO.Compression.FileSystem , aby se kód spustil.

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

Vlastnosti

Name Description
Archive

Získá archiv zip, do kterého položka patří.

Comment

Získá nebo nastaví volitelný vstupní komentář.

CompressedLength

Získá komprimovanou velikost vyjádřenou v bajtech položky v archivu zip.

CompressionMethod

Představuje komprimovaný soubor v archivu zip.

Crc32

32bitová cyklické redundantní kontrola.

ExternalAttributes

Atributy souborů specifické pro operační systém a aplikaci.

FullName

Získá relativní cestu položky v archivu zip.

IsEncrypted

Získá hodnotu, která označuje, zda je položka zašifrována.

LastWriteTime

Získá nebo nastaví čas poslední změny položky v archivu zip.

Length

Získá nekomprimovanou velikost vyjádřenou v bajtech položky v archivu ZIP.

Name

Získá název souboru položky v archivu zip.

Metody

Name Description
Delete()

Odstraní položku z archivu zip.

Equals(Object)

Určuje, zda je zadaný objekt roven aktuálnímu objektu.

(Zděděno od Object)
GetHashCode()

Slouží jako výchozí funkce hash.

(Zděděno od Object)
GetType()

Získá Type aktuální instance.

(Zděděno od Object)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Object.

(Zděděno od Object)
Open()

Otevře položku z archivu ZIP.

Open(FileAccess)

Představuje komprimovaný soubor v archivu zip.

OpenAsync(CancellationToken)

Asynchronně otevře položku.

OpenAsync(FileAccess, CancellationToken)

Představuje komprimovaný soubor v archivu zip.

ToString()

Načte relativní cestu položky v archivu zip.

Metody rozšíření

Name Description
ExtractToFile(ZipArchiveEntry, String, Boolean)

Extrahuje položku v archivu zip do souboru a volitelně přepíše existující soubor se stejným názvem.

ExtractToFile(ZipArchiveEntry, String)

Extrahuje položku v archivu zip do souboru.

ExtractToFileAsync(ZipArchiveEntry, String, Boolean, CancellationToken)

Asynchronně vytvoří soubor v systému souborů s obsahem položky a zadaným názvem.

ExtractToFileAsync(ZipArchiveEntry, String, CancellationToken)

Asynchronně vytvoří soubor v systému souborů s obsahem položky a zadaným názvem.

Platí pro