找不到文件路径
本文关键字:路径 文件 找不到 | 更新日期: 2023-09-27 17:55:13
我正在使用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
我收到的只是一个异常,指出:找不到文件'''bar。请注意此处的"''"。我也试过:
foo.exe bar.xml
foo.exe .'bar.xml
foo.exe ./bar.xml
我的应用程序位于''硬盘''ftp''测试''
如果我把文件放在"硬盘"文件夹下,一切都很好。当然,我不希望我的文件在这里。如何告诉我的应用程序在与我的应用程序相同的文件夹中查找此文件?
编辑:
在@Thomas发表评论后,我检查了我的路径,发现我确实在正确的文件夹中(''硬盘''ftp''Test)。
我必须使用以下代码来获取路径(因为紧凑框架 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');
它可以工作,但对我来说似乎不是很方便。还有其他想法吗?
- 确定完整的可执行文件目录。请参见如何:确定正在执行的应用程序的路径。内容适用于 .NET Compact Framework。 请注意,
System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase
以 URL 的形式返回程序集的位置,但System.Reflection.Assembly.GetExecutingAssembly().Location
返回完整路径或 UNC 位置(请参阅此处)。 - 使用 Path.Combine() 方法将字符串组合成结果路径。
因此,您的代码可能如下所示:
var fullPath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
var fullFileName = System.IO.Path.Combine(fullPath, _sFileName);