2011-04-11 61 views
5

我想使用帶有斜槓(/)的URL格式的路徑來使用Path類(GetDirectoryName,GetFileName,Combine等)的函數。我的路徑URL的路徑功能

例子:

"xxx://server/folder1/folder2/file"

我試着用Path功能,到底做的工作剛剛更換的分隔符。

我發現GetDirectoryName功能無法正常更換斜線:

Path.GetDirectoryName(@"xxx://server/folder/file") -> @"xxx:\server\folder"

就像你看到一個斜線丟失。

如何讓Path函數使用'alternative'分隔符?

我可以使用另一個具有相同功能的類嗎?

回答

5

恐怕GetDirectoryName,GetFileName,Combine等。在定義中使用Path.DirectorySeparatorChar,並且您想要Path.AltDirectorySeparatorChar

而且因爲Path是一個密封類,我覺得去的唯一方法是Path.AltDirectorySeparatorChar(「/」)字符串replacement.You可以取代Path.DirectorySeparatorChar(「\」)和Path.VolumeSeparatorChar:用「(「」): /「

1

您是否考慮過使用System.Uri,System.UriBuilder和(如有必要)自定義System.UriParser子類的組合?

0

如果URI是格式爲file://whatever的本地文件URI,那麼您可以撥打string path = new Uri(whatever).LocalPath並調用其上的Path方法。如果你不能保證Uri到本地路徑,你不能保證Uri的組件與機器,文件夾,文件,擴展名,使用目錄,分隔符或其他任何東西相對應。

3

GetDirectoryName(),您可以使用

pageRoot = uri.Remove(uri.LastIndexOf('/') + 1);