Path.Combine不生成绝对路径

时间:2016-01-18 21:10:24

标签: c# .net mono file-access

我在Linux上使用Mono运行了一些代码,我正在尝试创建路径,然后将这些路径传递给某些文件IO方法。

我发现如果我想指定根(例如:/etc/blah而不是/MyApplication/etc/blah),我必须执行以下操作:

Directory.GetFiles(Path.Combine("/etc", "blah"))

然而,正如您所看到的,我必须手动指定第一部分是/的绝对路径。这违背了Path.Combine的目的。我查看了文档中的重载,以指定它应该是相对路径还是绝对路径但是没有。

如何正确指定绝对路径?

2 个答案:

答案 0 :(得分:1)

Path.Combine不是为了产生绝对路径而设计的。返回的路径将是绝对的,如果且只有一个参数是绝对的。

string path = Path.Combine("foo", "bar"); // path is now "foo/bar", a relative path 旨在合并路径。它可以组合两个相对路径来创建新的相对路径。例如:

{{1}}

换句话说,该函数的行为与设计的一致,如果您希望生成绝对路径,请为第一个参数提供绝对路径。

答案 1 :(得分:-1)

string rootPath = IsWindowsOS() ? "C:\" : "/";
string absolutePath = Path.Combine(rootPath, "etc", "blah");
相关问题