Estoy tratando de determinar si una cadena de entrada de un usuario es válida para representar una ruta a una carpeta. Por válido, me refiero a formateado correctamente.
En mi aplicación, la carpeta representa un destino de instalación. Siempre que la ruta de la carpeta sea válida, quiero determinar si la carpeta existe y crearla si no es así.
Actualmente estoy usando IO.Directory.Exists( String path )
. Encuentro que esto funciona bien, excepto cuando el usuario no formatea la cadena correctamente. Cuando eso sucede, este método devolverá falso, lo que indica que la carpeta no existe. Pero esto es un problema porque no podré crear la carpeta después.
En mi búsqueda en Google encontré una sugerencia para usar una expresión regular para verificar si el formato es el adecuado. No tengo experiencia con las expresiones regulares y me pregunto si ese es un enfoque viable. Esto es lo que encontré:
Regex r = new Regex( @"^(([a-zA-Z]\:)|(\\))(\\{1}|((\\{1})[^\\]([^/:*?<>""|]*))+)$" );
return r.IsMatch( path );
¿Una prueba de expresión regular en combinación con Directory.Exists()
, me proporcionaría un método suficientemente bueno para verificar si la ruta es válida y si existe? Sé que esto variará según el sistema operativo y otros factores, pero el programa está dirigido solo a usuarios de Windows .