2015-11-20 12 views
5

Ho una cartella di immagini e ho il nome dell'immagine e il percorso completo del file memorizzato in un array nel mio programma. È possibile ottenere solo la cartella e il nome file dal percorso file.Ottieni la cartella di un file.

Quindi, se ho un percorso file di

C:\Users\Ryan\Documents\myImage.jpg 

ho bisogno di ottenere

Documents\myImage.jpg 

risposta

7

di questo codice:

FileInfo f = new FileInfo(@"C:\Users\Ryan\Documents\myImage.jpg"); 
string result = Path.Combine(f.Directory.Name, f.Name); 
+0

@farhan TNX già delted mio commento quando ho visto a risolvere il problema. non volevo ingombrare con commenti ^^ – Thomas

+1

@TimSchmelter In effetti, devi usare 'Path.Combine', perché se sei alla radice, ad es. 'C: \ file.txt' quindi' Directory.Name' restituisce 'C: \'. – MicroVirus

+0

@TimSchmelter Ma non aiuterà anche gli altri a scoprire che il secondo approccio può dare percorsi sbagliati? –

0
var pathParts = filepath.split('\\'); 
var lastPath = pathParts[pathParts - 2] + @"\" + pathParts[pathParts - 1]; 
2

La classe Path ha metodi per lavorare con nomi di file:

var path = @"C:\Users\Ryan\Documents\myImage.jpg"; 
var fileName = Path.GetFileName(path); 
var directoryName = Path.GetDirectoryName(path); 
var lastDirectoryName = Path.GetFileName(directoryName); 
var result = Path.Combine(lastDirectoryName, fileName); 
+0

Funziona anche ma l'uso di 'Path.GetFileName' per una directory non è leggibile come l'approccio' FileInfo.Directory.Name'. +1 –

0

questo è solo giocando con la corda, ma non il lavoro

string path = "C:\Users\Ryan\Documents\myImage.jpg"; 
    string[] temp = path.Split('\'); 
    string folder = temp[temp.Length - 2] + @"\" + temp[temp.Length - 1]; 
Problemi correlati