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);