¿Cuál es la forma más sencilla de obtener el directorio en el que se encuentra un archivo? Estoy usando esto para establecer un directorio de trabajo.
string filename = @"C:\MyDirectory\MyFile.bat";
En este ejemplo, debería obtener "C: \ MyDirectory".

@"C:\MyDirectory\MyFile.bat"Respuestas:
Si definitivamente tienes un camino absoluto, úsalo
Path.GetDirectoryName(path).Si solo puede obtener un nombre relativo, use
new FileInfo(path).Directory.FullName.Tenga en cuenta que
PathyFileInfoambos se encuentran en el espacio de nombresSystem.IO.fuente
new FileInfo(path).Directory.FullNamedebería funcionar en cualquier caso.fuente
fuente
Puede usar
System.IO.Path.GetDirectory(filename), o convertir la ruta en aFileInfo, y usarFileInfo.Directory.Si está haciendo otras cosas con el camino,
FileInfopuede tener ventajas.fuente
Use el código mencionado a continuación para obtener la ruta de la carpeta
Esto devolverá "C: \ MyDirectory" en su caso
fuente
Puede usar
Path.GetDirectoryNamey simplemente pasar el nombre del archivo.Enlace MSDN
fuente
Si está trabajando con un
FileInfoobjeto, entonces hay una manera fácil de extraer unastringrepresentación de la ruta completa del directorio a través de laDirectoryNamepropiedad.Descripción de la
FileInfo.DirectoryNamepropiedad a través de MSDN:Uso de la muestra:
Enlace a la documentación de MSDN .
fuente
Puede obtener la ruta de aplicación actual usando:
¡Buena suerte!
fuente
Primero, debe usar el espacio de nombres System.IO. Entonces;
o
fuente
Puede usar
Path.GetFullPathpara la mayoría de los casos. Pero si desea obtener la ruta también en el caso de que el nombre del archivo esté relativamente ubicado, puede usar el siguiente método genérico:Por ejemplo:
GetPath("C:\Temp\Filename.txt")regreso"C:\Temp\"GetPath("Filename.txt")volvercurrent working directorycomo"C:\Temp\"fuente
En mi caso, necesitaba encontrar el nombre del directorio de una ruta completa (de un directorio), así que simplemente hice:
fuente
"C:\MyDirectory"y noMyDirectory. El consejo de usar métodos de manipulación de cadenas es arriesgado, hay muchas trampas, más bien usePathmétodos dedicados .Path.GetDirectoryName (Context.Parameters ["assemblypath"])
fuente
Path.GetDirectoryNamese menciona en muchas otras respuestas (incluyendo respuesta aceptada)