2010-06-05 7 views
1

J'ai une fonction qui lit un tas de valeurs de chemin (8 ou 9 d'entre eux) à partir d'un fichier texte. Il utilise ces chemins plus tard dans l'application pour lire les fichiers. Quel est le meilleur moyen de vérifier la validité de ces chemins de fichier. Puis-je faire une seule prise de certaines sortes?attraper les chemins de fichier non valides

Répondre

0

Vous pouvez utiliser File.Exists et/ou Directory.Exists est un chemin d'accès peut être un répertoire.

static void Main(string[] args) 
{ 
    List<string> paths = new List<string>{"C:\\path1.txt", "c:\\path2.txt"}; 
    bool allValid = paths.All(path=>File.Exists(path)); 
} 
+1

'File.Exists' retournera aussi' false' si quelqu'un a verrouillé le fichier. –

+0

@John Saunders Merci d'avoir souligné cela, c'est effectivement le cas. –

2

System.IO.Directory.Exists (chemin de chaîne) System.IO.File.Exists (chemin de chaîne)

1

Je voudrais simplement utiliser File.Exists dans une boucle, assez simple et facile à lire. Y a-t-il un moyen plus tendance? Probablement.

0

Peut-être regex pourrait être une option pour vous, au moins dans un environnement Windows. Cela évite d'avoir un accès au disque, comme le ferait File.Exists. Source: http://www.csharp411.com/check-valid-file-path-in-c/

public bool IsValidPath(string path) 
{ 
    Regex r = new Regex(@"^(([a-zA-Z]\:)|(\\))(\\{1}|((\\{1})[^\\]([^/:*?<>""|]*))+)$"); 
    return r.IsMatch(path); 
} 
0

Envisagez d'utiliser la méthode System.IO.Path.GetFullPath. Comme la plupart des membres de la classe Path, il valide le chemin que vous passez et lance un ArgumentException si le chemin n'est pas valide.

Questions connexes