¿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
Path
yFileInfo
ambos se encuentran en el espacio de nombresSystem.IO
.fuente
new FileInfo(path).Directory.FullName
deberí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,
FileInfo
puede 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.GetDirectoryName
y simplemente pasar el nombre del archivo.Enlace MSDN
fuente
Si está trabajando con un
FileInfo
objeto, entonces hay una manera fácil de extraer unastring
representación de la ruta completa del directorio a través de laDirectoryName
propiedad.Descripción de la
FileInfo.DirectoryName
propiedad 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.GetFullPath
para 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 directory
como"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 usePath
métodos dedicados .Path.GetDirectoryName (Context.Parameters ["assemblypath"])
fuente
Path.GetDirectoryName
se menciona en muchas otras respuestas (incluyendo respuesta aceptada)