2010-10-11 18 views
7

Si tengo una ruta de archivo como "C: \ Mis documentos \ Imágenes \ Imagen1.png", ¿cómo puedo obtener el nombre de la carpeta principal del archivo "Imagen1.png"? En este caso, "Imágenes", pero eso es solo una muestra. Miré System.IO.Path y parece que no hay nada allí. Tal vez lo estoy pasando por alto, pero no tengo idea de dónde sería.Obtención de nombre (s) de carpeta de la ruta

Respuesta

9

De esta manera:

Path.GetFileName(Path.GetDirectoryName(something)) 
+0

elegante, yo no sabía que se podía hacer frente al problema como este . +1 – AndyPerfect

+0

Genial, este es el más sencillo. Gracias! – Stan

2

Prueba esto:

var directoryFullPath = Path.GetDirectoryName(@"C:\My Documents\Images\Image1.png"); 
var directoryName = Path.GetFileName(directoryFullPath); \\ Images 
4

Uso System.IO.FileInfo.

string fl = "C:\My Documents\Images\Image1.png"; 
System.IO.FileInfo fi = new System.IO.FileInfo(fl); 
string owningDirectory = fi.Directory.Name; 
+0

Esta propiedad devuelve la ruta completa al directorio, que no es lo que él quiere. – SLaks

+0

Gracias por señalar eso - actualizado. FileInfo.Directory.Name devolverá el resultado deseado. – code4life

1

El método siguiente que va a extraer todos los nombres de directorio y archivo de nombre

Dim path As String = "C:\My Documents\Images\Image1.png" 
Dim list As String() = path.Split("\") 
Console.WriteLine(list.ElementAt(list.Count - 2)) 
+0

Esto es innecesariamente lento. – SLaks

+0

bueno, el título alude a la posibilidad de obtener múltiples nombres de carpeta; no estaba seguro de si el asker podría haber deseado algo más que el directorio padre, ¿por qué no? – AndyPerfect

+0

También debe dividir en el separador de ruta alternativo (/ para Windows) – Joe

4

Crear una instancia de

System.IO.FileInfo f1 = new FileInfo("filepath"); 
        DirectoryInfo dir=f1.Directory; 
        string dirName = dir.Name; 
        string fullDirPath = dir.FullName; 
Cuestiones relacionadas