我正在尝试使用linkLabel在Windows窗体中打开一个Help.txt文件。但无法从绝对路径转换为相对路径。
首先,我尝试获取exe文件的绝对路径。哪个是成功的。 其次,只获取exe文件的目录。哪个是成功的。 第三,我试图将目录与Help.txt文件的相对路径组合在一起。哪个不成功。
exe文件位于 - > \ Project \ bin \ Debug文件夹,但Help.txt文件位于\ Project \ Help文件夹中。这是我的代码: -
string exeFile = (new System.Uri(Assembly.GetEntryAssembly().CodeBase)).AbsolutePath;
string Dir = Uri.UnescapeDataString(Path.GetDirectoryName(exeFile));
string path = Path.Combine(Dir, @"..\..\Help\Help.txt");
System.Diagnostics.Process.Start(path);
我的路径的结果是 - > \项目\ BIN \调试.... \帮助\的help.txt
答案 0 :(得分:5)
你需要使用Path.GetFullPath()来获得上层目录" ../../"考虑到了,见下文:
string exeFile = new System.Uri(Assembly.GetEntryAssembly().CodeBase).AbsolutePath;
string Dir = Path.GetDirectoryName(exeFile);
string path = Path.GetFullPath(Path.Combine(Dir, @"..\..\Help\Help.txt"));
System.Diagnostics.Process.Start(path);
根据GetFullPath的MSDN:返回指定路径字符串的绝对路径。 而Path.Combine将字符串组合成路径。