由於.NET不包含用於製作相對路徑的API,因此我使用了Uri的MakeRelativeUri
方法。這有效,但我遇到過幾起案件,因爲Uri沒有逃脫。所以,我已經修補了,太多:這種製作相對路徑的方法是否有效?
public static string MakeRelativePath(string basePath, string tgtPath) {
return
Uri.UnescapeDataString(
new Uri(basePath, UriKind.Absolute)
.MakeRelativeUri(new Uri(tgtPath, UriKind.Absolute))
.ToString()
).Replace('/', Path.DirectorySeparatorChar);
}
此版本似乎工作,但它讓我感覺有點quesy:不存在任何有效的本地文件系統路徑,這沒來由的轉義可能會損壞?
相關:How to get relative path from absolute path 的答案,這個問題不解決的特殊字符和逃避所有的問題,因此不回答這個問題。
的[如何從絕對路徑相對路徑(http://stackoverflow.com/questions/275689/how-to-get-relative-path-from-absolute-path) – 2011-06-05 16:00:18
可能重複@ Eamon這裏有一些很好的答案:http://stackoverflow.com/questions/275689/how-to-get-relative-path-from-absolute-path如果是我,我會去解決方案,P /調用到'PathRelativePathTo()' – 2011-06-05 16:00:43
是的,我看到一個也在使用Uri的答案,儘管沒有逃脫,即borked。 P /調用;好吧,這是緩慢的和依賴於平臺的,這意味着你可能遇到x86/x64問題,非滿意信任問題,當然像silverlight/XNA這樣的東西不一定支持它。它會工作,但這不是我的第一選擇。 – 2011-06-05 18:55:30