System.IO.Path
是非常笨拙的工作。在我的各種項目,我一直在遇到需要使用重複的,繁瑣,因而容易出錯的代碼片段相同的使用場景Path.Combine
,Path.GetFileName
,Path.GetDirectoryName
,String.Format
等場景,如:C#的一個好的文件路徑生成器庫?在.NET中使用
- 更改擴展對於給定文件名
- 改變的目錄路徑給定文件名
- 使用字符串格式化(如「
Package{0}.zip
」) - 建設的路徑,而不訴諸使用硬編碼目錄分隔符像建立一個文件路徑(因爲他們沒有在Linux上的單聲道工作)
- 等等等等
開始寫我自己的PathBuilder
類或類似的東西之前:是有這樣的好(和證實)的開源實現在C#中的東西?
UPDATE:OK,只是我的意思說明:
string zipFileName = Path.GetFileNameWithoutExtension(directoryName) + ".zip";
zipFileName = Path.Combine(
Path.GetDirectoryName(directoryName),
zipFileName);
一個更好的流利的API可能看起來像這樣:
Path2 directoryName = "something";
Path2 zipFileName = directoryName.Extension("zip");
或修建道路時:
Path2 directoryName = "something";
Path2 directory2 = directoryName.Add("subdirectory")
.Add("Temp").Add("myzip.zip");
而不是
string directory2 = Path.Combine(Path.Combine(Path.Combine(
directoryName, "subdirectory"), "Temp"), "myzip.zip");
我其實在過去實現過這樣的事情,但在一個單獨的項目中。我決定現在將它重用爲一個獨立的C#類,在VisualStudio的其他項目中添加「作爲鏈接」。這不是一個最乾淨的解決方案,但我想它會做。如果你有興趣,you can see the code here。
我很好奇你爲什麼認爲這些可能容易出錯? – 2010-03-25 08:34:37
因爲您需要在很多地方重寫相同或相似的代碼,每次重新發明輪子。遲早你會得到一個錯誤(錯誤的方法稱爲等)。 – 2010-03-25 09:28:08
我認爲你已經知道'FileInfo'和'DirectoryInfo'了嗎? – 2010-03-25 10:18:32