Solo me pregunto: estoy buscando una forma de validar si una ruta determinada es válida. (Nota: ¡No quiero verificar si existe un archivo! Solo quiero probar la validez de la ruta, por lo tanto, si es posible que exista un archivo en la ubicación) .
El problema es que no puedo encontrar nada en la API .Net. Debido a los muchos formatos y ubicaciones que admite Windows, prefiero usar algo nativo de MS.
Dado que la función debería poder comprobarse con:
- Rutas relativas (./)
- Rutas absolutas (c: \ tmp)
- UNC-Pathes (\ some-pc \ c $)
- Limitaciones de NTFS como la ruta completa 1024 caracteres: si no me equivoco, exceder la ruta hará que un archivo sea inaccesible para muchas funciones internas de Windows. Cambiarle el nombre con Explorer todavía funciona
- Rutas de GUID de volumen: "\? \ Volume {GUID} \ somefile.foo
¿Alguien tiene una función como esta?
Respuestas:
Prueba
Uri.IsWellFormedUriString()
:La cadena no se escapó correctamente.
La cadena es un Uri absoluto que representa un Uri de archivo implícito.
La cadena es un URI absoluto al que le falta una barra antes de la ruta.
La cadena contiene barras diagonales inversas sin escape incluso si se tratan como barras diagonales.
La cadena representa un Uri absoluto jerárquico y no contiene ": //".
El analizador del Uri.Scheme indica que la cadena original no estaba bien formada.
fuente
@"foo\bar\baz"
, que es una ruta relativa perfectamente válida ...O use FileInfo como se sugiere en En C #, verifique que el nombre del archivo sea posiblemente válido (no que exista) .
fuente
fuente
No he tenido ningún problema con el siguiente código. (Las rutas relativas deben comenzar con '/' o '\').
Por ejemplo, estos devolverían falso:
Y estos volverían verdaderos:
fuente
Puedes probar este código:
No estoy seguro de que cubra todos los casos ...
fuente
Lo más cerca que he estado es intentar crearlo y ver si tiene éxito.
fuente
Hay muchas buenas soluciones aquí, pero como ninguna de ellas verifica si la ruta está enraizada en una unidad existente, aquí hay otra:
Esta solución no tiene en cuenta las rutas relativas.
fuente
Obtenga los caracteres no válidos de
System.IO.Path.GetInvalidPathChars();
y verifique si su cadena (ruta del directorio) los contiene o no.fuente
Directorio ¿Existe?
fuente
fuente
Simplemente use
fuente
Puede intentar usar Path.IsPathRooted () en combinación con Path.GetInvalidFileNameChars () para asegurarse de que la ruta esté bien a mitad de camino.
fuente