108 votes

Meilleure façon de vérifier si une chaîne arbitraire est un nom de fichier valide

Dans mon application, l'utilisateur peut entrer un nom de fichier. Avant de commencer, j'aimerais vérifier si la chaîne d'entrée est un nom de fichier valide sous Windows Vista.

Quel est le moyen le plus simple de le faire?

Par valide je me réfère à légal et non existant

153voto

SLaks Points 391154

Vérifiez si filename.IndexOfAny(Path.GetInvalidFileNameChars()) >= 0 et !File.Exists(Path.Combine(someFolder, filename))

43voto

Phil Hunt Points 5153

Vérifier contre GetInvalidFileNameChars() :

 var isValid = !string.IsNullOrEmpty(fileName) &&
              fileName.IndexOfAny(Path.GetInvalidFileNameChars()) < 0 &&
              !File.Exists(Path.Combine(sourceFolder, fileName));
 

13voto

ddyer Points 1546

Si le fichier doit être créé, vous devez utiliser une boîte de dialogue de fichier pour spécifier le chemin du répertoire. Il existe une courte liste de caractères illégaux pour les noms de fichiers.

Le seul moyen réellement fiable de déterminer si un nom de fichier est acceptable est de l'essayer. Les autorisations sont un bourbier.

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