找不到文件路径

时间:2015-06-10 08:48:45

标签: c# path windows-ce c#-2.0 relative-path

我正在使用Windows CE 6.0。我正在开发一个需要读取放在我的可执行文件(foo.exe)旁边的XML文件(bar.xml)的应用程序。

我尝试使用以下方法访问它,在我的Main()之后调用:

private void ParseXmlFile(string _sFileName)
{
    XmlDocument l_doc = new XmlDocument();
    l_doc.Load(_sFileName);
}

现在,从Windows CE控制台启动我的应用程序:

foo.exe bar.xml

我收到的只是一个例外说明:Cound找不到文件'\ bar。注意这里的'\'。我也尝试过:

foo.exe bar.xml
foo.exe .\bar.xml
foo.exe ./bar.xml

我的应用程序位于\ Hard Disk \ ftp \ Test \

如果我将文件放在“硬盘”文件夹下,一切都很好。当然,我不希望我的文件在这里。如何告诉我的应用程序在与我的应用程序相同的文件夹中查找此文件?

编辑:
在@Thomas的评论之后,我检查了我的路径,发现我确实在正确的文件夹中(\ Hard Disk \ ftp \ Test)。

我必须使用以下代码来获取路径(因为Compact framework 2.0):

string l_sFullAppName = Assembly.GetCallingAssembly().GetName().CodeBase;
string l_sFullAppPath = Path.GetDirectoryName(l_sFullAppName);

XmlDocument l_doc = new XmlDocument();
l_doc.Load(_l_sFullAppPath + '\\bar.xml');

它有效,但对我来说似乎不太方便。还有其他想法吗?

1 个答案:

答案 0 :(得分:2)

  1. 确定完整的可执行文件目录。见HOW TO: Determine the Executing Application's Path。内容适用于.NET Compact Framework。 NoteSystem.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase将程序集的位置作为网址返回,但System.Reflection.Assembly.GetExecutingAssembly().Location返回完整路径或UNC位置(请参阅here)。
  2. 使用Path.Combine()方法将字符串组合到结果路径中。
  3. 结果您的代码可能是这样的:

    var fullPath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
    var fullFileName = System.IO.Path.Combine(fullPath, _sFileName);