2012-10-02 12 views
10

Qual è il modo più semplice per ottenere la lettera di unità da un percorso di file tipo di URI comeauto da URI percorso del file di tipo in C#

file:///D:/Directory/File.txt 

so che posso fare (percorso qui è una stringa contenente il testo sopra)

path = path.Replace(@"file:///", String.Empty); 
path = System.IO.Path.GetPathRoot(path); 

ma si sente un po 'goffo. C'è un modo per farlo senza usare String.Replace o simile?

+0

regexp '\/(\ w): \ /'? – Prasanth

risposta

15
var uri = new Uri("file:///D:/Directory/File.txt"); 
if (uri.IsFile) 
{ 
    DriveInfo di = new DriveInfo(uri.LocalPath); 
    var driveName = di.Name; // Result: D:\\ 
} 
+0

+1 per un approccio molto migliore – Habib

+0

Sarebbe meglio se aggiungessi un controllo 'if (uri.IsFile)' – Habib

+0

Grazie per il suggerimento. –

2

questo può essere fatto utilizzando il seguente codice:

string path = "file:///D:/Directory/File.txt"; 
    if(Uri.IsWellFormedUriString(path, UriKind.RelativeOrAbsolute)) { 
     Uri uri = new Uri(path); 
     string actualPath = uri.AbsolutePath; 
    } 
Problemi correlati