Path.GetFullPath donne uniquement les exceptions suivantes
ArgumentException le chemin est une chaîne de longueur nulle, ne contient que des espaces blancs ou contient un ou plusieurs des caractères non valides définis dans GetInvalidPathChars. -ou- Le système n'a pas pu récupérer le chemin absolu.
SecurityException L'appelant n'a pas les autorisations requises.
ArgumentNullException le chemin est nul.
NotSupportedException le chemin contient deux points (":") qui ne font pas partie d'un identifiant de volume (par exemple, "c:\").
PathTooLongException Le chemin spécifié, le nom du fichier, ou les deux dépassent la longueur maximale définie par le système. Par exemple, sur les plates-formes basées sur Windows, les chemins doivent être inférieurs à 248 caractères, et les noms de fichiers doivent être inférieurs à 260 caractères.
Une façon alternative est d'utiliser le suivant :
///
/// Valider le chemin. Si le chemin est relatif, ajoutez par défaut le chemin au répertoire du projet.
///
/// Chemin à valider
/// Chemin relatif
/// Si vous voulez vérifier le chemin du fichier
///
private static bool ValidateDllPath(ref string path, string RelativePath = "", string Extension = "")
{
// Vérifiez s'il contient des caractères non valides.
if (path.IndexOfAny(Path.GetInvalidPathChars()) == -1)
{
try
{
// Si le chemin est relatif, prendre %IGXLROOT% comme répertoire de base
if (!Path.IsPathRooted(path))
{
if (string.IsNullOrEmpty(RelativePath))
{
// Exceptions gérées par Path.GetFullPath
// ArgumentException le chemin est une chaîne de longueur nulle, ne contient que des espaces blancs
// ou contient un ou plusieurs des caractères non valides définis dans GetInvalidPathChars. -ou- Le système n'a pas pu récupérer le chemin absolu.
//
// SecurityException L'appelant n'a pas les autorisations requises.
//
// ArgumentNullException le chemin est nul.
//
// NotSupportedException le chemin contient deux points (":") qui ne font pas partie d'un identifiant de volume (par exemple, "c:\").
// PathTooLongException Le chemin spécifié, le nom du fichier, ou les deux dépassent la longueur maximale définie par le système. Par exemple, sur les plates-formes basées sur Windows, les chemins doivent être inférieurs à 248 caractères, et les noms de fichiers doivent être inférieurs à 260 caractères.
// RelativePath n'est pas passé donc nous prendrons le chemin du projet
path = Path.GetFullPath(RelativePath);
}
else
{
// Assurez-vous que le chemin est relatif au RelativePath et non à notre répertoire de projet
path = Path.Combine(RelativePath, path);
}
}
// Exceptions du constructeur FileInfo :
// System.ArgumentNullException :
// fileName est nul.
//
// System.Security.SecurityException:
// L'appelant n'a pas les autorisations requises.
//
// System.ArgumentException:
// Le nom de fichier est vide, contient uniquement des espaces blancs ou contient des caractères non valides.
//
// System.IO.PathTooLongException:
// Le chemin spécifié, le nom du fichier, ou les deux dépassent la longueur maximale définie par le système. Par exemple, sur les plateformes basées sur Windows, les chemins doivent être inférieurs à
// 248 caractères, et les noms de fichiers doivent être inférieurs à
// 260 caractères.
//
// System.NotSupportedException:
// fileName contient un deux points (:) au milieu de la chaîne.
FileInfo fileInfo = new FileInfo(path);
// Exceptions en utilisant FileInfo.Length :
// System.IO.IOException:
// System.IO.FileSystemInfo.Refresh() ne peut pas mettre à jour l'état du fichier ou du répertoire.
//
// System.IO.FileNotFoundException:
// Le fichier n'existe pas.-ou- La propriété Longueur est appelée pour un répertoire.
bool throwEx = fileInfo.Length == -1;
// Exceptions en utilisant FileInfo.IsReadOnly :
// System.UnauthorizedAccessException:
// L'accès à fileName est refusé.
// Le fichier décrit par l'objet FileInfo actuel est en lecture seule.-ou-
// Cette opération n'est pas prise en charge sur la plate-forme actuelle.-ou- L'appelant n'a pas
// les autorisations requises.
throwEx = fileInfo.IsReadOnly;
if (!string.IsNullOrEmpty(Extension))
{
// Valider l'extension du fichier.
if (Path.GetExtension(path).Equals(Extension, StringComparison.InvariantCultureIgnoreCase))
{
// Retranchez le chemin de la bibliothèque
path = path.Trim();
return true;
}
else
{
return false;
}
}
else
{
return true;
}
}
catch (ArgumentNullException)
{
// System.ArgumentNullException:
// fileName est nul.
}
catch (System.Security.SecurityException)
{
// System.Security.SecurityException:
// L'appelant n'a pas les autorisations requises.
}
catch (ArgumentException)
{
// System.ArgumentException:
// Le nom de fichier est vide, contient uniquement des espaces blancs ou contient des caractères non valides.
}
catch (UnauthorizedAccessException)
{
// System.UnauthorizedAccessException:
// L'accès à fileName est refusé.
}
catch (PathTooLongException)
{
// System.IO.PathTooLongException:
// Le chemin spécifié, le nom du fichier ou les deux dépassent la longueur maximale définie
// par le système. Par exemple, sur les plates-formes basées sur Windows, les chemins doivent être inférieurs à
// 248 caractères, et les noms de fichiers doivent être inférieurs à 260 caractères.
}
catch (NotSupportedException)
{
// System.NotSupportedException:
// fileName contient un deux points (:) au milieu de la chaîne.
}
catch (FileNotFoundException)
{
// System.FileNotFoundException
// L'exception qui est levée lorsqu'une tentative d'accès à un fichier qui n'existe pas
// échoue sur disque.
}
catch (IOException)
{
// System.IO.IOException:
// Une erreur d'E/S s'est produite lors de l'ouverture du fichier.
}
catch (Exception)
{
// Exception inconnue. Peut être due à un mauvais cas ou à des vérifications nulles.
}
}
else
{
// Le chemin contient des caractères non valides
}
return false;
}