ZipArchiveEntry.FullName Propriété
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Obtient le chemin d’accès relatif de l’entrée dans l’archive zip.
public:
property System::String ^ FullName { System::String ^ get(); };
public string FullName { get; }
member this.FullName : string
Public ReadOnly Property FullName As String
Valeur de propriété
Chemin d’accès relatif de l’entrée dans l’archive zip.
Remarques
La FullName propriété contient le chemin relatif, y compris la hiérarchie de sous-répertoire, d’une entrée dans une archive zip. (En revanche, la Name propriété contient uniquement le nom de l’entrée et n’inclut pas la hiérarchie de sous-répertoire.) Par exemple, si vous créez deux entrées dans une archive zip à l’aide de la CreateEntryFromFile méthode et que vous fournissez NewEntry.txt
comme nom pour la première entrée et AddedFolder\\NewEntry.txt
pour la deuxième entrée, les deux entrées auront NewEntry.txt
dans la Name propriété. La première entrée aura NewEntry.txt
également dans la FullName propriété, mais la deuxième entrée aura AddedFolder\\NewEntry.txt
dans la FullName propriété.
Vous pouvez spécifier n’importe quelle chaîne comme chemin d’accès d’une entrée, y compris les chaînes qui spécifient des chemins d’accès non valides et absolus. Par conséquent, la FullName propriété peut contenir une valeur qui n’est pas correctement mise en forme. Un chemin d’accès non valide ou absolu peut entraîner une exception lorsque vous extrayez le contenu de l’archive zip.
Exemples
L’exemple suivant montre comment itérer dans le contenu d’un fichier .zip et extraire les fichiers qui contiennent l’extension .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