我正在尋找類似於Path.Combine
的方法,它可以幫助我正確組合絕對路徑和相對路徑。例如,我想Path.Combine和點符號
Path.Combine(@"c:\alpha\beta", @"..\gamma");
產生c:\alpha\gamma
,而不是作爲c:\alpha\..\gamma
不Path.Combine
。有沒有簡單的方法來完成這一點?不用說,我也想要.
路徑或多個..
路徑(例如,..\..\
)正常工作。
我正在尋找類似於Path.Combine
的方法,它可以幫助我正確組合絕對路徑和相對路徑。例如,我想Path.Combine和點符號
Path.Combine(@"c:\alpha\beta", @"..\gamma");
產生c:\alpha\gamma
,而不是作爲c:\alpha\..\gamma
不Path.Combine
。有沒有簡單的方法來完成這一點?不用說,我也想要.
路徑或多個..
路徑(例如,..\..\
)正常工作。
string path = Path.Combine(@"c:\alpha\beta", @"..\gamma");
Console.WriteLine(Path.GetFullPath(path));
string path = Path.Combine(@"c:\alpha\beta", @"..\gamma");
DirectoryInfo info = new DirectoryInfo(path);
Console.WriteLine(info.FullName);
雙方將輸出:
c:\alpha\gamma
你可以做一個Path.Combine,後面跟着一個Path.GetFullPath。
你可以使用2個電話,像這樣的組合:
string path = Path.Combine(@"c:\alpha\beta", @"..\gamma");
string result = Path.GetFullPath(path);
而這應該會給你你正在尋找的結果。
您可以撥打Path.GetFullPath來解決此問題。
例如,下面的代碼:
string path = Path.Combine(@"c:\alpha\beta", @"..\gamma");
Console.WriteLine(path);
path = Path.GetFullPath(path);
Console.WriteLine(path);
會打印:
c:\alpha\beta\..\gamma
c:\alpha\gamma
但似乎GetFullPath並不總是正確的 嘗試:
Console.WriteLine(System.IO.Path.GetFullPath(@"\\machine\sharea\foldera\..\shareb\folderb"));
Console.WriteLine(System.IO.Path.GetFullPath(@"\\machine\sharea\foldera\..\..\shareb\folderb"));
它們輸出相同的結果,似乎你不能將它移動到不同的份額 該c orrect答案,第二個應該是
\\ machineA的\ shareb \ FolderB中
但它給
\\ machineA的\ sharea \ shareb \ FolderB中
兩個
咦,甚至不知道'GetFullPath'存在。性感。 – Nick 2010-01-27 18:34:31