2012-10-02 69 views
10

什麼是得到一個URI類型的文件路徑,如驅動器號在C#

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

我知道我能做到的驅動器盤符的最簡單的方法(這裏的路徑是包含一個字符串上面的文字)

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

但它感覺有點笨拙。有沒有辦法做到這一點,而不使用String.Replace或類似的?

+0

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

回答

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更好的方法 – Habib

+0

如果你添加一個檢查'if(uri.IsFile)' – Habib

+0

感謝你的建議會更好。 –

2

這可以用下面的代碼來完成:

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