连接带有后向路径的Environment.CurrentDirectory

时间:2008-12-06 12:52:21

标签: c# path

如果我有以下目录结构:

PROJECT1 / bin中/调试
Project2的/ XML / file.xml

我正在尝试从Project1 / bin / debug目录

引用file.xml

我基本上是在尝试执行以下操作:

string path = Environment.CurrentDirectory + @"..\..\Project2\xml\File.xml":

这是什么语法?

4 个答案:

答案 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);
}