ZipArchiveEntry Class

Definition

Rappresenta un file compresso in un archivio ZIP.Represents a compressed file within a zip archive.

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

Examples

Nel primo esempio viene illustrato come creare una nuova voce in un archivio zip e come scrivervi.The first example shows how to create a new entry in a zip archive and write to it.

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

Nel secondo esempio viene illustrato come utilizzare il metodo di estensione ExtractToFile(ZipArchiveEntry, String).The second example shows how to use the ExtractToFile(ZipArchiveEntry, String) extension method. Per eseguire il codice, è necessario fare riferimento all'assembly System.IO.Compression.FileSystem nel progetto.You must reference the System.IO.Compression.FileSystem assembly in your project for the code to execute.

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

Remarks

Un archivio zip contiene una voce per ogni file compresso.A zip archive contains an entry for each compressed file. La classe ZipArchiveEntry consente di esaminare le proprietà di una voce e di aprire o eliminare la voce.The ZipArchiveEntry class enables you to examine the properties of an entry, and open or delete the entry. Quando si apre una voce, è possibile modificare il file compresso scrivendo nel flusso per il file compresso.When you open an entry, you can modify the compressed file by writing to the stream for that compressed file.

I metodi per la modifica degli archivi zip e le relative voci di file vengono distribuiti in tre classi: ZipFile, ZipArchive e ZipArchiveEntry.The methods for manipulating zip archives and their file entries are spread across three classes: ZipFile, ZipArchive and ZipArchiveEntry.

Per...To… Usare...Use…
Creare un archivio zip da una directoryCreate a zip archive from a directory ZipFile.CreateFromDirectory
Estrarre il contenuto di un archivio zip in una directoryExtract the contents of a zip archive to a directory ZipFile.ExtractToDirectory
Aggiungere nuovi file a un archivio Zip esistenteAdd new files to an existing zip archive ZipArchive.CreateEntry
Recuperare un file in un archivio zipRetrieve an file in a zip archive ZipArchive.GetEntry
Recuperare tutti i file in un archivio zipRetrieve all of the files in a zip archive ZipArchive.Entries
Per aprire un flusso in un singolo file contenuto in un archivio zipTo open a stream to an individual file contained in a zip archive ZipArchiveEntry.Open
Eliminare un file da un archivio zipDelete a file from a zip archive ZipArchiveEntry.Delete

Se si fa riferimento all'assembly System.IO.Compression.FileSystem nel progetto, è possibile accedere a due metodi di estensione per la classe ZipArchiveEntry.If you reference the System.IO.Compression.FileSystem assembly in your project, you can access two extension methods for the ZipArchiveEntry class. Questi metodi sono ExtractToFile(ZipArchiveEntry, String) e ExtractToFile(ZipArchiveEntry, String, Boolean)e consentono di decomprimere il contenuto della voce in un file.Those methods are ExtractToFile(ZipArchiveEntry, String) and ExtractToFile(ZipArchiveEntry, String, Boolean), and they enable you to decompress the contents of the entry to a file. L'assembly System.IO.Compression.FileSystem non è disponibile nel Windows 8Windows 8.The System.IO.Compression.FileSystem assembly is not available in Windows 8Windows 8. Nelle app Windows 8.x StoreWindows 8.x Store è possibile decomprimere il contenuto di un archivio usando DeflateStream o GZipStreamoppure è possibile usare il comprimetore e il decompressore dei tipi di Windows RuntimeWindows Runtime per comprimere e decomprimere i file.In Windows 8.x StoreWindows 8.x Store apps, you can decompress the contents of an archive by using DeflateStream or GZipStream, or you can use the Windows RuntimeWindows Runtime types Compressor and Decompressor to compress and decompress files.

Properties

Archive

Ottiene l'archivio ZIP cui appartiene la voce.Gets the zip archive that the entry belongs to.

CompressedLength

Ottiene la dimensione compressa della voce nell'archivio ZIP.Gets the compressed size of the entry in the zip archive.

Crc32

Controllo ridondante ciclico a 32 bit.The 32-bit Cyclic Redundant Check.

ExternalAttributes

Attributi di file specifici del sistema operativo e dell'applicazione.OS and application specific file attributes.

FullName

Ottiene il percorso relativo della voce nell'archivio ZIP.Gets the relative path of the entry in the zip archive.

LastWriteTime

Ottiene o imposta l'ultima volta in cui la voce nell'archivio ZIP è stata modificata.Gets or sets the last time the entry in the zip archive was changed.

Length

Ottiene la dimensione non compressa della voce nell'archivio ZIP.Gets the uncompressed size of the entry in the zip archive.

Name

Ottiene il nome file della voce nell'archivio ZIP.Gets the file name of the entry in the zip archive.

Methods

Delete()

Elimina la voce dall'archivio ZIP.Deletes the entry from the zip archive.

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetHashCode()

Funge da funzione hash predefinita.Serves as the default hash function.

(Inherited from Object)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.Creates a shallow copy of the current Object.

(Inherited from Object)
Open()

Apre la voce dall'archivio ZIP.Opens the entry from the zip archive.

ToString()

Recupera il percorso relativo della voce nell'archivio ZIP.Retrieves the relative path of the entry in the zip archive.

Extension Methods

ExtractToFile(ZipArchiveEntry, String)

Estrae una voce nell'archivio ZIP in un file.Extracts an entry in the zip archive to a file.

ExtractToFile(ZipArchiveEntry, String, Boolean)

Estrae una voce nell'archivio ZIP in un file e facoltativamente sovrascrivere un file esistente con lo stesso nome.Extracts an entry in the zip archive to a file, and optionally overwrites an existing file that has the same name.

Applies to