这个的方法有很多吧。
1. 用PInvok调用Windows API的PathRelativePathTo
2. 自行处理字符串
3. 利用Uri
前两种就不说了,觉得有点麻烦,想了解的同学,自已,百度Google一下吧。
第3种,也没啥好说的,直接Code。
1 public static string GetRelativePath(string filespec, string folder) 2 { 3 const string directorySeparatorChar = "\\"; 4 Uri pathUri = new Uri(filespec); 5 6 if (!folder.EndsWith(directorySeparatorChar)) 7 { 8 folder += directorySeparatorChar; 9 } 10 Uri folderUri = new Uri(folder); 11 return Uri.UnescapeDataString(folderUri.MakeRelativeUri(pathUri).ToString().Replace("/", directorySeparatorChar)); 12 }
因为这个我是在WinRT里用的,在WinRT里,没有 Path.DirectorySeparatorChar,你在其它环境下使用Path.DirectorySeparatorChar 替换 "\\"。