ZipArchiveEntry Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Representa un archivo comprimido incluido en un archivo zip.
public ref class ZipArchiveEntry
public class ZipArchiveEntry
type ZipArchiveEntry = class
Public Class ZipArchiveEntry
- Herencia
-
ZipArchiveEntry
Comentarios
Un archivo ZIP contiene una entrada para cada archivo comprimido. La ZipArchiveEntry clase permite examinar las propiedades de una entrada y abrir o eliminar la entrada. Al abrir una entrada, puede modificar el archivo comprimido escribiendo en la secuencia para ese archivo comprimido.
Los métodos para manipular archivos ZIP y sus entradas de archivo se distribuyen entre tres clases: ZipFile, ZipArchive y ZipArchiveEntry.
Para... | Use... |
---|---|
Create un archivo ZIP desde un directorio | ZipFile.CreateFromDirectory |
Extraer el contenido de un archivo ZIP en un directorio | ZipFile.ExtractToDirectory |
Agregar nuevos archivos a un archivo ZIP existente | ZipArchive.CreateEntry |
Recuperar un archivo en un archivo ZIP | ZipArchive.GetEntry |
Recuperar todos los archivos de un archivo ZIP | ZipArchive.Entries |
Para abrir una secuencia en un archivo individual contenido en un archivo ZIP | ZipArchiveEntry.Open |
Eliminar un archivo de un archivo ZIP | ZipArchiveEntry.Delete |
Si hace referencia al ensamblado en el System.IO.Compression.FileSystem
proyecto, puede tener acceso a dos métodos de extensión para la ZipArchiveEntry clase . Esos métodos son ExtractToFile(ZipArchiveEntry, String) y ExtractToFile(ZipArchiveEntry, String, Boolean), y permiten descomprimir el contenido de la entrada en un archivo. El System.IO.Compression.FileSystem
ensamblado no está disponible en Windows 8. En Windows 8.x Aplicaciones de la Tienda, puedes descomprimir el contenido de un archivo mediante DeflateStream o GZipStream, o puedes usar los tipos Compressor de Windows Runtime y Decompressor para comprimir y descomprimir archivos.
Ejemplos
En el primer ejemplo se muestra cómo crear una nueva entrada en un archivo ZIP y escribir en él.
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
En el segundo ejemplo se muestra cómo usar el método de ExtractToFile(ZipArchiveEntry, String) extensión . Debe hacer referencia al ensamblado en el System.IO.Compression.FileSystem
proyecto para que se ejecute el código.
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
Propiedades
Archive |
Obtiene el archivo zip al que pertenece la entrada. |
Comment |
Obtiene o establece el comentario de entrada opcional. |
CompressedLength |
Obtiene el tamaño comprimido, expresado en bytes, de la entrada en el archivo ZIP. |
Crc32 |
Prueba cíclica de redundancia de 32 bits. |
ExternalAttributes |
Atributos de archivos específicos del sistema operativo y de las aplicaciones. |
FullName |
Obtiene la ruta de acceso relativa de la entrada en el archivo zip. |
IsEncrypted |
Obtiene un valor que indica si la entrada está cifrada. |
LastWriteTime |
Obtiene o establece la última vez que se cambió la entrada en el archivo zip. |
Length |
Obtiene el tamaño sin comprimir, expresado en bytes, de la entrada en el archivo ZIP. |
Name |
Obtiene el nombre de archivo de la entrada en el archivo zip. |
Métodos
Delete() |
Elimina la entrada del archivo zip. |
Equals(Object) |
Determina si el objeto especificado es igual que el objeto actual. (Heredado de Object) |
GetHashCode() |
Sirve como la función hash predeterminada. (Heredado de Object) |
GetType() |
Obtiene el Type de la instancia actual. (Heredado de Object) |
MemberwiseClone() |
Crea una copia superficial del Object actual. (Heredado de Object) |
Open() |
Abre la entrada desde el archivo zip. |
ToString() |
Recupera la ruta de acceso relativa de la entrada en el archivo zip. |
Métodos de extensión
ExtractToFile(ZipArchiveEntry, String) |
Dibuja una entrada del archivo zip a un archivo. |
ExtractToFile(ZipArchiveEntry, String, Boolean) |
Extrae una entrada del archivo zip en un archivo y, opcionalmente, sobrescribe un archivo existente que tenga el mismo nombre. |