令我驚訝的是,這種代碼不會產生預期的結果:爲什麼Path.Combine用相對路徑產生這個結果?
var basePath = @"\\server\BaseFolder";
var relativePath = @"\My\Relative\Folder";
var combinedPath = Path.Combine(basePath, relativePath);
結果是\My\Relative\Folder
而不是預期的\\server\BaseFolder\My\Relative\Folder
。
這是爲什麼?組合相對路徑的最好方法是什麼?可能有或可能沒有斜線?
編輯:我知道,我可以做字符串操作上relativePath檢測和刪除的起始斜線。有沒有一種更安全的方式來做這件事(我認爲Path.Combine
應該是安全的方式),這將解釋反斜槓和前端?
這不是_relative_路徑。 – SLaks 2011-04-21 18:08:49
我會理解,如果前面有2個反斜槓,使其成爲UNC路徑,但是一個斜槓?真的嗎? – Brandon 2011-04-21 18:10:55
是;認真。 '\ a \ b'是**絕對**路徑。 (雖然它相對於驅動器) – SLaks 2011-04-21 18:13:18