ZipArchiveEntry Classe

Definição

Representa um arquivo compactado em um arquivo zip.Represents a compressed file within a zip archive.

public ref class ZipArchiveEntry
public class ZipArchiveEntry
type ZipArchiveEntry = class
Public Class ZipArchiveEntry
Herança
ZipArchiveEntry

Comentários

Um arquivo zip contém uma entrada para cada arquivo compactado.A zip archive contains an entry for each compressed file. A ZipArchiveEntry classe permite que você examine as propriedades de uma entrada e abra ou exclua a entrada.The ZipArchiveEntry class enables you to examine the properties of an entry, and open or delete the entry. Ao abrir uma entrada, você pode modificar o arquivo compactado gravando no fluxo desse arquivo compactado.When you open an entry, you can modify the compressed file by writing to the stream for that compressed file.

Os métodos para manipular arquivos zip e suas entradas de arquivo são distribuídos entre três classes: ZipFile ZipArchive e ZipArchiveEntry .The methods for manipulating zip archives and their file entries are spread across three classes: ZipFile, ZipArchive and ZipArchiveEntry.

Para...To... Use...Use...
Criar um arquivo zip a partir de um diretórioCreate a zip archive from a directory ZipFile.CreateFromDirectory
Extrair o conteúdo de um arquivo zip para um diretórioExtract the contents of a zip archive to a directory ZipFile.ExtractToDirectory
Adicionar novos arquivos a um arquivo zip existenteAdd new files to an existing zip archive ZipArchive.CreateEntry
Recuperar um arquivo no arquivo zipRetrieve an file in a zip archive ZipArchive.GetEntry
Recuperar todos os arquivos em um arquivo zipRetrieve all of the files in a zip archive ZipArchive.Entries
Para abrir um fluxo em um arquivo individual contido em um arquivo zipTo open a stream to an individual file contained in a zip archive ZipArchiveEntry.Open
Excluir um arquivo do arquivo zipDelete a file from a zip archive ZipArchiveEntry.Delete

Se você referenciar o System.IO.Compression.FileSystem assembly em seu projeto, poderá acessar dois métodos de extensão para a ZipArchiveEntry classe.If you reference the System.IO.Compression.FileSystem assembly in your project, you can access two extension methods for the ZipArchiveEntry class. Esses métodos são ExtractToFile(ZipArchiveEntry, String) e ExtractToFile(ZipArchiveEntry, String, Boolean) , e permitem que você descompacte o conteúdo da entrada em um arquivo.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. O System.IO.Compression.FileSystem assembly não está disponível no Windows 8.The System.IO.Compression.FileSystem assembly is not available in Windows 8. Nos aplicativos da loja do Windows 8. x, você pode descompactar o conteúdo de um arquivo usando DeflateStream GZipStream o ou o, ou pode usar o compressor de tipos de Windows Runtime e o descompactador para compactar e descompactar arquivos.In Windows 8.x Store apps, you can decompress the contents of an archive by using DeflateStream or GZipStream, or you can use the Windows Runtime types Compressor and Decompressor to compress and decompress files.

ExemplosExamples

O primeiro exemplo mostra como criar uma nova entrada em um arquivo zip e gravar nela.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

O segundo exemplo mostra como usar o ExtractToFile(ZipArchiveEntry, String) método de extensão.The second example shows how to use the ExtractToFile(ZipArchiveEntry, String) extension method. Você deve referenciar o System.IO.Compression.FileSystem assembly em seu projeto para que o código seja executado.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

Propriedades

Archive

Obtém o arquivo morto zip ao qual a entrada pertence.Gets the zip archive that the entry belongs to.

CompressedLength

Obtém o tamanho compactado da entrada no arquivo zip.Gets the compressed size of the entry in the zip archive.

Crc32

A Verificação Redundante Cíclica de 32 bits.The 32-bit Cyclic Redundant Check.

ExternalAttributes

Atributos de arquivo específicos do sistema operacional e de aplicativos.OS and application specific file attributes.

FullName

Obtém o caminho relativo da entrada no arquivo zip.Gets the relative path of the entry in the zip archive.

LastWriteTime

Obtém ou define a última vez que a entrada no arquivo morto zip foi alterada.Gets or sets the last time the entry in the zip archive was changed.

Length

Obtém o tamanho não compactado da entrada no arquivo zip.Gets the uncompressed size of the entry in the zip archive.

Name

Obtém o nome de arquivo da entrada no arquivo zip.Gets the file name of the entry in the zip archive.

Métodos

Delete()

Exclui a entrada do arquivo zip.Deletes the entry from the zip archive.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.Determines whether the specified object is equal to the current object.

(Herdado de Object)
GetHashCode()

Serve como a função de hash padrão.Serves as the default hash function.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.Gets the Type of the current instance.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do Object atual.Creates a shallow copy of the current Object.

(Herdado de Object)
Open()

Abre a entrada do arquivo zip.Opens the entry from the zip archive.

ToString()

Recupera o caminho relativo da entrada no arquivo zip.Retrieves the relative path of the entry in the zip archive.

Métodos de Extensão

ExtractToFile(ZipArchiveEntry, String)

Extrai uma entrada no arquivo zip para um arquivo.Extracts an entry in the zip archive to a file.

ExtractToFile(ZipArchiveEntry, String, Boolean)

Extrai uma entrada do arquivo zip para um arquivo e, opcionalmente, substitui um arquivo existente que tem o mesmo nome.Extracts an entry in the zip archive to a file, and optionally overwrites an existing file that has the same name.

Aplica-se a