如果我有以下目录结构:
PROJECT1 / bin中/调试
Project2的/ XML / file.xml
我正在尝试从Project1 / bin / debug目录
引用file.xml我基本上是在尝试执行以下操作:
string path = Environment.CurrentDirectory + @"..\..\Project2\xml\File.xml":
这是什么语法?
答案 0 :(得分:10)
将路径组件操作为路径组件而不是字符串可能更好:
string path = System.IO.Path.Combine(Environment.CurrentDirectory,
@"..\..\..\Project2\xml\File.xml");
答案 1 :(得分:4)
使用:
System.IO.Path.GetFullPath(@"..\..\Project2\xml\File.xml")
答案 2 :(得分:2)
string path = Path.Combine( Environment.CurrentDirectory,
@"..\..\..\Project2\xml\File.xml" );
一个“..”带你到bin
下一步“..”将您带到Project1
下一步“..”将您带到Project1的父级
然后到文件
答案 3 :(得分:1)
请注意,使用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”,那么您可以使用类似这样的方法而不是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);
}