我正在尝试上几个目录,然后进入输入文件夹......
我试过这个
var path = Path.Combine(Directory.GetCurrentDirectory(), @"..\\..\\..\\Input\\" + filename);
但路径的价值最终是......
C:\\Users\user1\\Desktop\\ToSend\\test\\reverser\\Reverser\\bin\\Debug\\..\\\\..\\\\..\\\\Input\\\\limerick.txt
有什么想法吗?
答案 0 :(得分:2)
你需要获得绝对而不是相对路径。因此,您必须使用 GetFullPath()而不是组合()。
检查this
答案 1 :(得分:0)
您可以使用DirectoryInfo.Parent属性。
答案 2 :(得分:0)
首先,当使用带字符串的@时,不需要转义\字符,因此只需使用单个\ slash就可以避免结果中的双转义斜杠。
关于路径问题:这取决于你想做什么。如果结果字符串用于使用System.IO.File.*
执行某些文件操作,或者使用StreamReader
/ StreamWriter
从文件写入/读取,则操作本身将负责处理目录时检测\..\
,所以不用担心!
答案 3 :(得分: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);
答案 4 :(得分:0)
扩展lamloumi的答案并清理代码:
var path = Path.GetFullPath(Path.Combine(Directory.GetCurrentDirectory(), @"..\..\..\Input", filename));
应生成文件的绝对路径。