¿Hay algo integrado en System.IO.Path que me dé solo la ruta del archivo?
Por ejemplo, si tengo un string
@ "c: \ webserver \ public \ myCompany \ configs \ promo.xml",
¿Hay algún método BCL que me dará
"c: \ servidor web \ public \ myCompany \ configs \"?

promo.xmldesigna un archivo o un directorio con ese mismo nombre. Probablemente por esoPath.GetDirectoryName()se implementa de manera tan simple y simplemente trunca el último segmento, o elimina la barra inclinada final si hay una.Respuestas:
Path.GetDirectoryName()... pero necesita saber que la ruta que está pasando contiene un nombre de archivo; simplemente elimina el bit final de la ruta, ya sea un nombre de archivo o un nombre de directorio (en realidad no tiene idea de cuál).Primero puede validar probando
File.Exists()y / oDirectory.Exists()en su ruta primero para ver si necesita llamarPath.GetDirectoryNamefuente
File.Exists(). De hecho, es bastante contraproducente en el caso en que su razón para encontrar el nombre del directorio es crearlo si aún no existe.System.IOpara que esto funcione.fuente
using System.IO;utilizar métodos de rutaPath.GetDirectoryName()devuelve el nombre del directorio, por lo que podría llamar (con el carácter de solidus inverso al final)Path.GetDirectoryName(filePath) + Path.DirectorySeparatorChar.fuente
fuente
Use 'GetParent ()' como se muestra, funciona bien. Agregue la comprobación de errores según lo necesite.
fuente
Usé esto y funciona bien:
fuente