2010-01-08 102 views
4

在.NET基類庫中,有一個System.IO.Path類用於對錶示文件系統路徑的字符串執行常見操作。然而,我需要的是一個封裝了路徑的類,所以我得到了類型安全和路徑操作的可能較短的表示法。我正在考慮一個.NET相當於C++ Boost's路徑類。這樣的課是否存在?是否有保存文件系統路徑的類?

更新:我不一定在尋找一個可以容納文件和目錄路徑的類。但是,由於文件系統路徑可用於指向兩者,因此很明顯可以使用相同的類。

結論的DirectoryInfo的FileInfo來接近我要找的。但是,它們似乎只是用來表示文件或目錄,而不是文件或目錄路徑。這使得很難做到路徑操作,比如combining a directory path and a relative file path,所以我想我會寫一個封裝路徑的類。

回答

1

沒有這樣的類作爲.NET Framework的一部分。我建議你自己寫,也許基於StringBuilder和Path類。

+0

DirectoryInfo不是這樣嗎? :-) – 2010-01-08 08:30:32

+0

它是否適用於不存在的路徑?如果他想把自己限制在實際的目錄中,那麼我希望他會更新這個問題。 – 2010-01-08 08:50:19

+0

它有一個Exists屬性和一個Create方法,所以是的,它適用於不存在的目錄。 – 2010-01-08 08:56:31

9

您在尋找System.IO.DirectoryInfo的分類。

DirectoryInfo類來自摘要[FileSystemInfo]類,而且您還有描述文件的FileInfo類。

+0

確實,這似乎適用於目錄路徑。是否還有一個可以保存文件路徑的類? – 2010-01-08 09:04:32

+0

我更新了我的答案。檢查FileInfo類。 – 2010-01-08 09:21:19

2

根據您的具體問題,您可以使用Uri類,因爲它也可以表示本地地址。

但是,正如Rune said(+1),你應該用DirectoryInfo

0

去,我覺得在.NET中的心態是不是一個文件路徑綁定到一個協議。

例如,File類是靜態使用的。 文件路徑的標識作爲字符串傳遞,然後在需要查找時執行靜態方法File.exists(pathstring)。

我比較喜歡.NET中的思維模式,它具有可實例化的File類。因爲一旦你有一個可實例化的File類,每個人都期望一個File對象被傳遞。

通常情況下,文件標識最好作爲字符串傳遞,因爲它經歷了多個字符串變異以及檢查和比較,其中大多數比較/變異是最好的,並且是有效地通過正則表達式完成的。由於必須提取字符串,並且如果進行了修改,必須重新實例化新的File對象,因此以File對象傳遞的文件標識會吸收cpu。

通常,在Java中,我發現我必須將File對象來回地來回轉換,因爲其他程序員或庫提供者對File類有過度/強迫的愛情關係。