ZipArchiveEntry.FullName 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 ruta de acceso relativa de la entrada en el archivo zip.
public:
property System::String ^ FullName { System::String ^ get(); };
public string FullName { get; }
member this.FullName : string
Public ReadOnly Property FullName As String
Valor de propiedad
Ruta de acceso relativa de la entrada en el archivo zip.
Comentarios
La FullName propiedad contiene la ruta de acceso relativa, incluida la jerarquía de subdirectorios, de una entrada en un archivo ZIP. (En cambio, la Name propiedad contiene solo el nombre de la entrada y no incluye la jerarquía de subdirectorios). Por ejemplo, si crea dos entradas en un archivo ZIP mediante el CreateEntryFromFile método y proporciona NewEntry.txt
como nombre para la primera entrada y AddedFolder\\NewEntry.txt
para la segunda entrada, ambas entradas tendrán NewEntry.txt
en la Name propiedad . La primera entrada también NewEntry.txt
tendrá en la FullName propiedad , pero la segunda entrada tendrá AddedFolder\\NewEntry.txt
en la FullName propiedad .
Puede especificar cualquier cadena como ruta de acceso de una entrada, incluidas las cadenas que especifican rutas de acceso no válidas y absolutas. Por lo tanto, la FullName propiedad puede contener un valor que no tiene el formato correcto. Una ruta de acceso absoluta o no válida podría producir una excepción al extraer el contenido del archivo ZIP.
Ejemplos
En el ejemplo siguiente se muestra cómo recorrer en iteración el contenido de un archivo .zip y extraer archivos que contienen la extensión .txt.
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