Partilhar via


ZipArchiveEntry Classe

Definição

Representa um arquivo compactado em um arquivo zip.

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 ZipArchiveEntry classe permite que você examine as propriedades de uma entrada e abra ou exclua a entrada. Ao abrir uma entrada, você pode modificar o arquivo compactado gravando no fluxo desse arquivo compactado.

Os métodos para manipular arquivos zip e suas entradas de arquivo são distribuídos em três classes: ZipFilee ZipArchiveZipArchiveEntry.

Para... Use...
Create um arquivo zip de um diretório ZipFile.CreateFromDirectory
Extrair o conteúdo de um arquivo zip para um diretório ZipFile.ExtractToDirectory
Adicionar novos arquivos a um arquivo zip existente ZipArchive.CreateEntry
Recuperar um arquivo em um arquivo zip ZipArchive.GetEntry
Recuperar todos os arquivos em um arquivo zip ZipArchive.Entries
Para abrir um fluxo para um arquivo individual contido em um arquivo zip ZipArchiveEntry.Open
Excluir um arquivo de um arquivo zip ZipArchiveEntry.Delete

Se você fizer referência ao System.IO.Compression.FileSystem assembly em seu projeto, poderá acessar dois métodos de extensão para a ZipArchiveEntry classe . 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. O System.IO.Compression.FileSystem assembly não está disponível no Windows 8. Em aplicativos da Loja Windows 8.x, você pode descompactar o conteúdo de um arquivo morto usando DeflateStream ou GZipStreamou , ou pode usar os tipos Compressor de Windows Runtime e Decompressor compactar e descompactar arquivos.

Exemplos

O primeiro exemplo mostra como criar uma nova entrada em um arquivo zip e gravar nele.

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 método de ExtractToFile(ZipArchiveEntry, String) extensão. Você deve referenciar o System.IO.Compression.FileSystem assembly em seu projeto para que o código seja executado.

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.

Comment

Obtém ou define o comentário de entrada opcional.

CompressedLength

Obtém o tamanho compactado, expresso em bytes, da entrada no arquivo zip.

Crc32

A Verificação Redundante Cíclica de 32 bits.

ExternalAttributes

Atributos de arquivo específicos do sistema operacional e de aplicativos.

FullName

Obtém o caminho relativo da entrada no arquivo zip.

IsEncrypted

Obtém um valor que indica se a entrada é criptografada.

LastWriteTime

Obtém ou define a última vez que a entrada no arquivo morto zip foi alterada.

Length

Obtém o tamanho não compactado, expresso em bytes, da entrada no arquivo zip.

Name

Obtém o nome de arquivo da entrada no arquivo zip.

Métodos

Delete()

Exclui a entrada do arquivo zip.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
Open()

Abre a entrada do arquivo zip.

ToString()

Recupera o caminho relativo da entrada no arquivo zip.

Métodos de Extensão

ExtractToFile(ZipArchiveEntry, String)

Extrai uma entrada no arquivo zip para um arquivo.

ExtractToFile(ZipArchiveEntry, String, Boolean)

Extrai uma entrada do arquivo zip para um arquivo e, opcionalmente, substitui um arquivo existente que tem o mesmo nome.

Aplica-se a