ZipArchiveEntry Classe

Definizione

Rappresenta un file compresso in un archivio ZIP.

public ref class ZipArchiveEntry
public class ZipArchiveEntry
type ZipArchiveEntry = class
Public Class ZipArchiveEntry
Ereditarietà
ZipArchiveEntry

Commenti

Un archivio zip contiene una voce per ogni file compresso. La ZipArchiveEntry classe consente di esaminare le proprietà di una voce e aprire o eliminare la voce. Quando si apre una voce, è possibile modificare il file compresso scrivendo nel flusso per il file compresso.

I metodi per modificare gli archivi zip e le relative voci di file vengono distribuiti tra tre classi: ZipFilee ZipArchiveZipArchiveEntry.

A... Usare...
Create un archivio zip da una directory ZipFile.CreateFromDirectory
Estrarre il contenuto di un archivio zip in una directory ZipFile.ExtractToDirectory
Aggiungere nuovi file a un archivio zip esistente ZipArchive.CreateEntry
Recuperare un file in un archivio zip ZipArchive.GetEntry
Recuperare tutti i file in un archivio zip ZipArchive.Entries
Per aprire un flusso a un singolo file contenuto in un archivio zip ZipArchiveEntry.Open
Eliminare un file da un archivio zip ZipArchiveEntry.Delete

Se si fa riferimento all'assembly System.IO.Compression.FileSystem nel progetto, è possibile accedere a due metodi di estensione per la ZipArchiveEntry classe. Questi metodi sono ExtractToFile(ZipArchiveEntry, String) e ExtractToFile(ZipArchiveEntry, String, Boolean)consentono di decomprimere il contenuto della voce in un file. L'assembly System.IO.Compression.FileSystem non è disponibile in Windows 8. Nelle app Windows 8.x Store è possibile decomprimere il contenuto di un archivio usando DeflateStream o GZipStreamoppure è possibile usare i tipi Compressor di Windows Runtime e Decompressor per comprimere e decomprimere i file.

Esempio

Il primo esempio illustra come creare una nuova voce in un archivio zip e scriverlo.

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

Il secondo esempio illustra come usare il ExtractToFile(ZipArchiveEntry, String) metodo di estensione. È necessario fare riferimento all'assembly nel progetto per l'esecuzione System.IO.Compression.FileSystem del codice.

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

Proprietà

Archive

Ottiene l'archivio ZIP cui appartiene la voce.

Comment

Ottiene o imposta il commento di voce facoltativo.

CompressedLength

Ottiene le dimensioni compresse, espresse in byte, della voce nell'archivio zip.

Crc32

Controllo ridondante ciclico a 32 bit.

ExternalAttributes

Attributi di file specifici del sistema operativo e dell'applicazione.

FullName

Ottiene il percorso relativo della voce nell'archivio ZIP.

IsEncrypted

Ottiene un valore che indica se la voce è crittografata.

LastWriteTime

Ottiene o imposta l'ultima volta in cui la voce nell'archivio ZIP è stata modificata.

Length

Ottiene le dimensioni non compresse, espresse in byte, della voce nell'archivio zip.

Name

Ottiene il nome file della voce nell'archivio ZIP.

Metodi

Delete()

Elimina la voce dall'archivio ZIP.

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
Open()

Apre la voce dall'archivio ZIP.

ToString()

Recupera il percorso relativo della voce nell'archivio ZIP.

Metodi di estensione

ExtractToFile(ZipArchiveEntry, String)

Estrae una voce nell'archivio ZIP in un file.

ExtractToFile(ZipArchiveEntry, String, Boolean)

Estrae una voce nell'archivio ZIP in un file e sovrascrive facoltativamente un file esistente con lo stesso nome.

Si applica a