129 votes

En C#, vérifiez que le nom de fichier est *possible* d'être valide (et non qu'il existe).

Existe-t-il une méthode dans l'espace de noms System.IO qui vérifie la validité d'un nom de fichier ?

Par exemple, C:\foo\bar validerait et :"~-* ne serait pas

Ou un peu plus délicat, X:\foo\bar validerait s'il y a un X: sur le système, mais ne le ferait pas autrement.

Je suppose que je pourrais écrire moi-même une telle méthode, mais je suis plus intéressé par une méthode intégrée.

2voto

casperOne Points 49736

Utilisez l'option statique GetInvalidFileNameChars méthode sur le Path classe dans le System.IO espace de noms pour déterminer quels caractères sont illégaux dans un nom de fichier.

Pour le faire dans un chemin, appelez la fonction statique GetInvalidPathChars méthode sur la même classe.

Pour déterminer si la racine d'un chemin est valide, vous appelez la fonction statique GetPathRoot méthode sur le Path pour obtenir le Root, puis utiliser la classe Directory classe pour déterminer s'il est valide. Vous pourrez ensuite valider le reste du chemin normalement.

2voto

shackett Points 143

Plusieurs méthodes de System.IO.Path lèvent des exceptions si le chemin ou le nom de fichier n'est pas valide :

  • Path.IsPathRooted()
  • Path.GetFileName()

http://msdn.microsoft.com/en-us/library/system.io.path_methods.aspx

1voto

BFree Points 46421

Je ne connais rien qui puisse valider tout cela pour vous, mais la classe Path de .NET peut vous aider énormément.

Pour commencer, c'est le cas :

 char[] invalidChars = Path.GetInvalidFileNameChars(); //returns invalid charachters

Ou :

Path.GetPathRoot(string); // will return the root.

1voto

Jay Riggs Points 30783

J'ai eu de la chance en utilisant des expressions régulières comme d'autres l'ont montré.

Il faut garder à l'esprit que Windows interdit au moins certains noms de fichiers qui contiennent des caractères illégaux. Quelques-uns me viennent à l'esprit : com, nul, prn.

Je ne l'ai pas avec moi maintenant, mais j'ai une regex qui prend en compte ces noms de fichiers. Si vous voulez, je peux la poster, sinon je suis sûr que vous pouvez la trouver de la même manière que moi : Google.

-Jay

0voto

tanathos Points 4145

La meilleure façon de procéder est probablement de créer une méthode personnalisée combinant l'utilisation d'une expression rationnelle et d'une petite recherche dans votre système de fichiers (pour voir les lecteurs, par exemple).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X