2011年4月27日 星期三

.Net 提供的 Path 類別

在檔案上傳時,隨時會需要組檔案路徑、檔案名稱的需求,而  .Net 提供了 Path 類別,可以讓我們輕鬆地完成。以下整理了網路蒐集而來的用法,可以很快地瞭解到如何使用 Path。

需引用的命名空間:
System.IO;

string strPath = @"D:\myUpload\file01.txt";
//取得完整路徑
Path.GetFullPath(strPath); → D:\myUpload\file01.txt

//取得根目錄
Path.GetPathRoot(strPath); → D:\

//取得目錄名稱
Path.GetDirectoryName(strPath); → D:\myUpload

//取得檔名
Path.GetFileName(strPath); → file01.txt

//取得檔名(不含副檔名)
Path.GetFileNameWithoutExtension(strPath); → file01

//取得副檔名
Path.GetExtension(strPath); → .txt

//變更副檔名
Path.ChangeExtension(strPath, "jpg"); → D:\myUpload\file01.jpg

//結合路徑(前面路徑後面有無倒斜線都沒差)
Path.Combine("D:\myUpload", "test.jpg"); → D:\myUpload\test.jpg
Path.Combine("D:\myUpload\", "test.jpg"); → D:\myUpload\test.jpg

//建立並取得唯一的暫存檔完整路徑
Path.GetTempFileName(); → C:\Users\paladin_adm\AppData\Local\Temp\tmp3723.tmp

//取得目前系統的暫存資料夾
Path.GetTempPath(); → C:\Users\paladin_adm\AppData\Local\Temp\

//取得隨機檔案名稱
Path.GetRandomFileName(); → xib2n5aq.n5j


針對不同的檔案名稱測試
-------------------------
Input:cat.aspx
Result:
GetFileName: cat.aspx
GetFileNameWithoutExtension: cat
GetDirectoryName: 
-------------------------
Input:really-long-page.aspx
Result:
GetFileName: really-long-page.aspx
GetFileNameWithoutExtension: really-long-page
GetDirectoryName: 
-------------------------
Input:test.aspx
Result:
GetFileName: test.aspx
GetFileNameWithoutExtension: test
GetDirectoryName: 
-------------------------
Input:invalid-page
Result:
GetFileName: invalid-page
GetFileNameWithoutExtension: invalid-page
GetDirectoryName: 
-------------------------
Input:something-else.aspx
Result:
GetFileName: something-else.aspx
GetFileNameWithoutExtension: something-else
GetDirectoryName: 
-------------------------
Input:Content/Rat.aspx
Result:
GetFileName: Rat.aspx
GetFileNameWithoutExtension: Rat
GetDirectoryName: Content
-------------------------
Input:http://dotnetperls.com/Cat/Mouse.aspx
Result:
GetFileName: Mouse.aspx
GetFileNameWithoutExtension: Mouse
GetDirectoryName: http:\dotnetperls.com\Cat
-------------------------
Input:C:\Windows\File.txt
Result:
GetFileName: File.txt
GetFileNameWithoutExtension: File
GetDirectoryName: C:\Windows
-------------------------
Input:C:\Word-2007.docx
Result:
GetFileName: Word-2007.docx
GetFileNameWithoutExtension: Word-2007
GetDirectoryName: C:\

特別要注意的,是 Path.Combine(string1,string2) 裡的 string1,不管後面是否有倒斜線,都沒有關系。另外在Dot Net Pers網站上有提到,如果你使用 Path 類別來處理 URL 的字串時,要注意轉換後的節果,原本 URL 的斜線會變成倒斜線。

參考網址:
01.http://www.dotnetperls.com/path
02.http://www.dotblogs.com.tw/sam319/archive/2009/12/21/12589.aspx

沒有留言:

張貼留言