ZipArchive.Entries Propiedad
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í.
Obtiene la colección de entradas que están actualmente en el archivo zip.
public:
property System::Collections::ObjectModel::ReadOnlyCollection<System::IO::Compression::ZipArchiveEntry ^> ^ Entries { System::Collections::ObjectModel::ReadOnlyCollection<System::IO::Compression::ZipArchiveEntry ^> ^ get(); };
public System.Collections.ObjectModel.ReadOnlyCollection<System.IO.Compression.ZipArchiveEntry> Entries { get; }
member this.Entries : System.Collections.ObjectModel.ReadOnlyCollection<System.IO.Compression.ZipArchiveEntry>
Public ReadOnly Property Entries As ReadOnlyCollection(Of ZipArchiveEntry)
Valor de propiedad
La colección de entradas que están actualmente en el archivo zip.
Excepciones
El archivo zip no admite lectura.
El archivo .zip se ha desechado.
El archivo zip está dañado y sus entradas no pueden recuperarse.
Ejemplos
En el ejemplo siguiente se muestra cómo abrir un archivo ZIP e iterar por la colección de entradas.
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);
}
}
}
}
}
open System
open System.IO;
open System.IO.Compression;
[<EntryPoint>]
let main _ =
let zipPath = @".\result.zip"
printfn "Provide path where to extract the zip file:"
let extractPath = stdin.ReadLine();
// Normalizes the path.
let mutable 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) |> not then
extractPath <- extractPath + string Path.DirectorySeparatorChar
use archive = ZipFile.OpenRead zipPath
for entry in archive.Entries do
if entry.FullName.EndsWith(".txt", StringComparison.OrdinalIgnoreCase) then
// Gets the full path to ensure that relative segments are removed.
let 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) then
entry.ExtractToFile destinationPath
0
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
Comentarios
Utilice la Entries propiedad para recuperar toda la colección de entradas. Use el GetEntry método para recuperar una sola entrada por nombre.