获取文件的相对路径?

时间:2012-10-02 21:28:07

标签: c# .net-4.0 linq-to-xml

我有一个名为settings.xml的文件位于:

c:\solution1\solution1\data\settings.xml

现在,我正在做:

XDocument doc = XDocument.Load(@"c:\solution1\solution1\settings.xml");

我无法想象如何用相对路径来做这件事。

2 个答案:

答案 0 :(得分:5)

如果您的意思是相对于您的可执行文件,则可以使用

string exeLocation = System.Reflection.Assembly.GetExecutingAssembly().CodeBase

注意经常提出的

System.Reflection.Assembly.GetExecutingAssembly().Location

将获得程序集当前所在的路径,它可以是不同的,例如如果正在执行卷影副本。

您可以使用

string exeDir = System.IO.Path.GetDirectoryName(exeLocation);

获取可执行文件的目录。

如果要查找安装位置下 data 目录中的文件,可以

string dataFile = Path.Combine(exeDir, "data\settings.xml");

请注意,在Windows Vista及更高版本中,默认情况下,您不会将访问权限发送到安装目录下的目录。

答案 1 :(得分:0)

您还可以相对于从

开始的当前目录
System.Environment.CurrentDirectory