Partager via


ZipArchiveEntry Classe

Définition

Représente un fichier compressé dans une archive zip.

public ref class ZipArchiveEntry
public class ZipArchiveEntry
type ZipArchiveEntry = class
Public Class ZipArchiveEntry
Héritage
ZipArchiveEntry

Remarques

Une archive zip contient une entrée pour chaque fichier compressé. La ZipArchiveEntry classe vous permet d’examiner les propriétés d’une entrée et d’ouvrir ou de supprimer l’entrée. Lorsque vous ouvrez une entrée, vous pouvez modifier le fichier compressé en écrivant dans le flux de ce fichier compressé.

Les méthodes de manipulation des archives zip et de leurs entrées de fichier sont réparties sur trois classes : ZipFile, ZipArchive et ZipArchiveEntry.

À... Utilisez...
Create une archive zip à partir d’un répertoire ZipFile.CreateFromDirectory
Extraire le contenu d’une archive zip dans un répertoire ZipFile.ExtractToDirectory
Ajouter de nouveaux fichiers à une archive zip existante ZipArchive.CreateEntry
Récupérer un fichier dans une archive zip ZipArchive.GetEntry
Récupérer tous les fichiers d’une archive zip ZipArchive.Entries
Pour ouvrir un flux dans un fichier individuel contenu dans une archive zip ZipArchiveEntry.Open
Supprimer un fichier d’une archive zip ZipArchiveEntry.Delete

Si vous référencez l’assembly System.IO.Compression.FileSystem dans votre projet, vous pouvez accéder à deux méthodes d’extension pour la ZipArchiveEntry classe . Ces méthodes sont ExtractToFile(ZipArchiveEntry, String) et ExtractToFile(ZipArchiveEntry, String, Boolean), et vous permettent de décompresser le contenu de l’entrée dans un fichier. L’assembly System.IO.Compression.FileSystem n’est pas disponible dans Windows 8. Dans les applications du Store Windows 8.x, vous pouvez décompresser le contenu d’une archive à l’aide DeflateStream de ou GZipStream, ou vous pouvez utiliser les types Compressor Windows Runtime et Decompressor pour compresser et décompresser des fichiers.

Exemples

Le premier exemple montre comment créer une entrée dans une archive zip et y écrire.

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

Le deuxième exemple montre comment utiliser la méthode d’extension ExtractToFile(ZipArchiveEntry, String) . Vous devez référencer l’assembly System.IO.Compression.FileSystem dans votre projet pour que le code s’exécute.

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

Propriétés

Archive

Obtient l'archive zip à laquelle l'entrée appartient.

Comment

Obtient ou définit le commentaire d’entrée facultatif.

CompressedLength

Obtient la taille compressée, exprimée en octets, de l’entrée dans l’archive zip.

Crc32

Contrôle de redondance cyclique 32 bits.

ExternalAttributes

Attributs de fichier propres au système d’exploitation et à l’application.

FullName

Obtient le chemin d’accès relatif de l’entrée dans l’archive zip.

IsEncrypted

Obtient une valeur qui indique si l’entrée est chiffrée.

LastWriteTime

Obtient ou définit la date de dernière modification de l'entrée dans l'archive zip.

Length

Obtient la taille non compressée, exprimée en octets, de l’entrée dans l’archive zip.

Name

Obtient le nom du fichier de l'entrée dans l'archive zip.

Méthodes

Delete()

Supprime l'entrée de l'archive zip.

Equals(Object)

Détermine si l'objet spécifié est égal à l'objet actuel.

(Hérité de Object)
GetHashCode()

Fait office de fonction de hachage par défaut.

(Hérité de Object)
GetType()

Obtient le Type de l'instance actuelle.

(Hérité de Object)
MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
Open()

Ouvre l'entrée à partir de l'archive zip.

ToString()

Récupère le chemin d’accès relatif de l’entrée dans l’archive zip.

Méthodes d’extension

ExtractToFile(ZipArchiveEntry, String)

Extrait une entrée de l'archive zip dans un fichier.

ExtractToFile(ZipArchiveEntry, String, Boolean)

Extrait une entrée de l’archive zip vers un fichier et remplace éventuellement un fichier existant de même nom.

S’applique à