日常的開發中,獲取絕對檔案路徑才是主流吧!連path.getfullpath
這種生成絕對路徑的方法都已經成為 .net standard 的一部分了。
然而,生成相對路徑依然有用——比如你的配置檔案是相對於工作目錄的,必須這個路徑是輸出給使用者看的……
那麼,既然path
沒有生成相對路徑的方法,還能怎麼生成相對路徑呢?別跟我說自己去做字串比較……
uri
卻提供了makerelativeuri
方法,可以生成乙個路徑到另乙個路徑的相對路徑。於是我們可以寫出這樣的**:
public
static
string
makerelativepath(string frompath, string topath)
執行傳入c:\users\walterlv\opensource\demo
和c:\users\walterlv\opensource\demo\build\config.xml
。結果,竟然得到的相對路徑是:demo/build/config.xml
。
那個demo
明明是兩者共有的路徑部分,卻存在於相對路徑中;
生成的路徑使用/
,而不是 windows 系統使用的\
。
於是我們需要分別進行這兩個處理。對於前者,我們必須讓uri
意識到這是乙個資料夾才能讓最終生成的路徑不帶這個重複的部分;對於後者,我們需要進行路徑連線符轉換。於是最終的**我整理成了如下方法:
public
static
string
makerelativepath(string frompath, string topath)
if (fromuri.scheme.equals("file", stringcomparison.invariantcultureignorecase)
&& !frompath.endswith("/") && !frompath.endswith("\\"))
var relativeuri = fromuri.makerelativeuri(touri);
var relativepath = uri.unescapedatastring(relativeuri.tostring());
if (touri.scheme.equals("file", stringcomparison.invariantcultureignorecase))
return relativepath;
}
現在重新傳入c:\users\walterlv\opensource\demo
和c:\users\walterlv\opensource\demo\build\config.xml
。結果,已經能夠得到:build\config.xml
了。
參考資料
根據模板檔案生成乙個靜態html檔案的類
根據模板檔案生成乙個靜態html檔案的類一般我們用php輸出乙個html檔案,總是用 head 這樣乙個長串來完成。本類主要提供乙個簡便的用php輸出html檔案的方法。避免了在程式中出現過多的帶有長字串。類定義檔案 createhtml.class.php 如下 定義所需工作函式 約定以標記 為開...
根據模板檔案生成乙個靜態html檔案的類
根據模板檔案生成乙個靜態html檔案的類一般我們用php輸出乙個html檔案,總是用 head 這樣乙個長串來完成。本類主要提供乙個簡便的用php輸出html檔案的方法。避免了在程式中出現過多的帶有長字串。類定義檔案createhtml.class.php 如下 定義所需工作函式 約定以標記為開始 ...
寫了乙個wwwscan的路徑生成工具
drupal 6.22 htaccess drupal 6.22 changelog.txt drupal 6.22 cron.php drupal 6.22 index.php drupal 6.22 install.mysql.txt drupal 6.22 install.pgsql.txt ...