前幾天處理了一個檔案沒更新的問題,請看下圖:
這是一個 UNC 路徑,可以看到它路徑中間有兩個 \
,然後它就爆了。
會造成這樣的原因是因為在原始程式碼中,在兜路徑的時候沒有處理尾綴的 \
的數量,而使得尾綴的 \
多了或少了,路徑就失效了。
用 Path.Combine() 來合併路徑
System.IO.Path
提供了一個 Combine()
方法方便我們來合併路徑,我們完全不用擔心尾綴是否有無 \
。
但是 System.IO.Path 不是只有 Combine() 而已,它提供了一系列與檔案(資料夾)路徑相關的 API,底下介紹幾個我個人常用的。
Path.GetDirectoryName() 取得檔案或目錄目前所屬資料夾的完整路徑
Path.GetDirectoryName() 非常方便,論使用頻率的話它應該是最高的,它可以用來取得一個檔案或目錄所屬的資料夾完整路徑,使用方法請參考我之前的文章。
Path.ChangeExtension() 改變副檔名
用這個 Path.ChangeExtension() 來改變副檔名,不用處理 .
的問題。
Path.GetFileName()、Path.GetExtension()、Path.GetFileNameWithoutExtension()
這三個方法是同一群的,依序是取得檔案名稱
、取得副檔名
、取得不包含副檔名的檔案名稱
。
Path.GetPathRoot() 取得根目錄的完整路徑
Path.GetTempPath() 取得當前系統暫存資料夾的完整路徑
Path.GetTempFileName() 產生一個零位元組的暫存檔案
這個方法會產生一個零位元組的暫存檔案,並回傳它的完整路徑。