2

我正在尝试上几个目录,然后进入输入文件夹...

我试过这个

var path = Path.Combine(Directory.GetCurrentDirectory(), @"..\\..\\..\\Input\\" + filename);

但路径的价值最终是..

C:\\Users\user1\\Desktop\\ToSend\\test\\reverser\\Reverser\\bin\\Debug\\..\\\\..\\\\..\\\\Input\\\\limerick.txt

有任何想法吗?

4

5 回答 5

2

您需要获取绝对路径而不是相对路径。所以你必须使用GetFullPath()而不是Combine()

检查这个

于 2014-08-20T07:29:21.157 回答
0

您可以使用DirectoryInfo.Parent属性。

于 2014-08-20T07:26:31.237 回答
0

首先,当使用 @ 和字符串时,不需要转义 \ 字符,因此只需使用单个 \ 斜杠,您就可以避免结果中出现双转义斜杠。

关于路径问题:这取决于你想做什么。如果结果字符串用于使用 / 进行一些文件操作或使用/System.IO.File.*从文件中写入/读取,则操作本身会在检测时负责遍历目录,因此无需担心!StreamReaderStreamWriter\..\

于 2014-08-20T07:28:05.740 回答
0

假设您知道要从路径中删除多少级别:

public string DirectoryGOUp(string path, int levelCount) {
    if(string.IsNullOrEmpty(path) || levelCount < 1)
        return path;

    string upperLevel = System.IO.Path.GetDirectoryName(path);

    if(--levelCount > 0)
        return DirectoryGOUp(upperLevel, levelCount);

    return upperLevel;
}

然后调用它:

var newPath = DirectoryGOUp(Directory.GetCurrentDirectory(),3); newPath = Path.Combine(newPath, @"Input\"+filename);

于 2014-08-20T07:33:23.890 回答
0

要扩展 lamloumi 的答案并清理代码:

var path = Path.GetFullPath(Path.Combine(Directory.GetCurrentDirectory(), @"..\..\..\Input", filename));

应该生成文件的绝对路径。

于 2014-08-20T21:18:30.710 回答