无法获取文件的绝对路径

时间:2015-05-28 17:09:23

标签: c# winforms absolute-path

我有一个包含标签的脚本编辑器。每个标签页都有一个标题,其中包含文件的名称。我还有以下代码:

string fileName = tabControl.SelectedTab.Text;
string filePath = Path.GetFullPath(fileName);

上面的代码应该返回fileName的绝对路径。但是,我已经发现它实际上返回了我的脚本编辑器的绝对路径.exe!

为什么会这样?我已对其进行了测试,是的,fileName确实有正确的文件名,那么为什么Path.GetFullPath()无效?

2 个答案:

答案 0 :(得分:3)

您必须保留有关文件绝对路径的信息 - 无法根据文件名重新构建它。

为什么Path.GetFullPath(fileName)不起作用:此方法根据当前工作目录将文件的相对路径转换为绝对路径。程序运行时(即使用文件打开对话框时)该位置可能会更改,默认情况下会在exe文件目录中启动(通常与文本文件的位置无关)。

答案 1 :(得分:1)

如果您创建FileInfo对象并使用FullName属性,它应该有效。

Path.GetFullPath的不稳定行为的答案可能在于MSDN,但这句话只会为我带来红旗:

  

不需要存在path指定的文件或目录。例如,如果c:\ temp \ newdir是当前目录,则在文件名(如test.txt)上调用GetFullPath将返回c:\ temp \ newdir \ test.txt。该文件不需要存在。