,如果我有以下目錄結構:串聯Environment.CurrentDirectory背部路徑
PROJECT1 /斌/調試
Project2中/ XML/file.xml
我試圖來引用到file.xml PROJECT1 /斌/調試目錄
我基本上是試圖做到以下幾點:
string path = Environment.CurrentDirectory + @"..\..\Project2\xml\File.xml":
什麼是正確的這個語法?
,如果我有以下目錄結構:串聯Environment.CurrentDirectory背部路徑
PROJECT1 /斌/調試
Project2中/ XML/file.xml
我試圖來引用到file.xml PROJECT1 /斌/調試目錄
我基本上是試圖做到以下幾點:
string path = Environment.CurrentDirectory + @"..\..\Project2\xml\File.xml":
什麼是正確的這個語法?
這可能是更好的操作路徑組件路徑組件,而不是字符串:
string path = System.IO.Path.Combine(Environment.CurrentDirectory,
@"..\..\..\Project2\xml\File.xml");
用途:
System.IO.Path.GetFullPath(@"..\..\Project2\xml\File.xml")
string path = Path.Combine(Environment.CurrentDirectory,
@"..\..\..\Project2\xml\File.xml");
一 「」 把你帶到斌
下一頁「..」帶你到Project1
下一頁「」帶你到Project的母公司
然後下到文件
請注意,使用Path.Combine()可能不會得到預期的結果,例如:
string path = System.IO.Path.Combine(@"c:\dir1\dir2",
@"..\..\Project2\xml\File.xml");
這導致以下字符串:
@"c:\dir1\dir2\dir3\..\..\Project2\xml\File.xml"
如果你希望的路徑爲「C:\ DIR1 \ Project2的\ XML \ File.xml」,那麼你可能會使用的方法是這樣一個代替鄰f Path.Combine():
public static string CombinePaths(string rootPath, string relativePath)
{
DirectoryInfo dir = new DirectoryInfo(rootPath);
while (relativePath.StartsWith("..\\"))
{
dir = dir.Parent;
relativePath = relativePath.Substring(3);
}
return Path.Combine(dir.FullName, relativePath);
}
這將轉換爲.. \ Project1 \ bin \ debug \ .. \ .. \ Project2 \ ...如果您考慮「..」只是吃了以前的目錄路徑,你會得到.. \ Project1 \ Project2 \ ... – tvanfosson 2008-12-06 13:08:59
夠正確。我沒有把他的數字計算在內 - 他認爲這是因爲他們缺乏領先的「\」。將會進行修改。 – 2008-12-07 01:37:39
爲我工作! +1 – 2011-08-16 15:59:17