【问题标题】:Convert Relative Path to Absolute Path将相对路径转换为绝对路径
【发布时间】:2017-08-01 09:44:26
【问题描述】:

我正在尝试使用 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);

我的路径的结果是 -> \Project\bin\Debug....\Help\Help.txt

【问题讨论】:

标签: c# relative-path absolute-path


【解决方案1】:

您需要使用 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 将字符串组合成一个路径。

【讨论】:

  • 你能告诉我们路径的值(带有无效字符)吗?以及 exeFile 的价值是什么?
  • Uri.UnescapeDataString
猜你喜欢
  • 2011-11-07
  • 2011-05-02
  • 2016-12-14
  • 1970-01-01
相关资源
最近更新 更多