這個的方法有很多吧。
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 替換 "\\"。
&可以作為“按位與”或是“取地址”運算符
下面是作為兩種用法的介紹:
1. 按位與運算 按位與運算符"&"是雙目運算符。其功能是參與運算的兩數各對應的二進位相與。只有對應的兩個二進位均為1時,結果位才為1 ,否則為0。參與運算的數以補碼方式出現。
例如:9&5可寫算式如下: 00001001 (9的二進制補碼)&00000101 (5的二進制補碼) 00000001 (1的二進制補碼)可見9&5=1。
按位與運算通常用來對某些位清0或保留某些位。例如把a 的高八位清 0 , 保留低八位, 可作 a&255 運算 ( 255 的二進制數為0000000011111111)。
2.取地址
&作為一元運算符,結果是右操作對象的地址。
例如&x返回x的地址。
地址本身是一個抽象的概念,用於表示對象在存儲器中的邏輯位置
&可以作為“按位與”或是“取地址”運算符
下面是作為兩種用法的介紹:
1. 按位與運算 按位與運算符"&"是雙目運算符。其功能是參與運算的兩數各對應的二進位相與。只有對應的兩個二進位均為1時,結果位才為1 ,否則為0。參與運算的數以補碼方式出現。
例如:9&5可寫算式如下: 00001001 (9的二進制補碼)&00000101 (5的二進制補碼) 00000001 (1的二進制補碼)可見9&5=1。
按位與運算通常用來對某些位清0或保留某些位。例如把a 的高八位清 0 , 保留低八位, 可作 a&255 運算 ( 255 的二進制數為0000000011111111)。
2.取地址
&作為一元運算符,結果是右操作對象的地址。
例如&x返回x的地址。
地址本身是一個抽象的概念,用於表示對象在存儲器中的邏輯位置