这篇文章给大家聊聊关于读取配置文件失败,以及英雄联盟读取配置文件失败对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。
记录平时发现并解决的相关问题。
当前编写的应用程序在启动时,需要加载配置文件,并在程序打开时加载配置文件中的url,加载失败时抛出加载失败的异常信息。
在bin目录下双击可执行问题,能够正常加载配置文件并打开对应的url。但是在将可执行文件的快捷方式固定在任务栏上,直接点击任务栏图标打开对应应用程序则提示加载配置文件异常。
报错提示找不到相关的配置文件:
通过异常堆栈信息确认是配置文件加载失败,相关代码获取配置文件代码如下:
///
\\n///默认页面url配置文件\\n///\\npublicstaticstringindexurlfile="resource/config/station.xml";\\n\\n///
\\n///获取默认界面url\\n///\\n///
\\npublicstaticstringgetindex\\n{\\nxmldocumentxmldoc=newxmldocument();\\n\\nif(!file.exists(indexurlfile))\\n{\\nthrownewexception("配置文件不存在");\\n}\\nxmldoc.load(urlpath);\\nif(xmldoc==null)\\n{\\nthrownewexception("配置文件读取失败");\\n}\\nxmlnodelistindexlist=xmldoc.getelementsbytagname("index");\\nif(indexlist.count==0||indexlist[0].attributes.count==0)\\n{\\nthrownewexception("配置文件格式不正确");\\n}\\nurl=indexlist[0].attributes[0].value;\\nif(string.isnullorempty(url))\\n{\\nthrownewexception("配置文件格式不正确");\\n}\\nreturnurl;\\n}\\n
通过查看代码确认配置文件的路径为相对路径:"resource/config/station.xml",同时通过问题场景确认,在任务栏点击快捷图标时,程序启动时获取到的路径为桌面路径,在桌面路径下去查找文件"resource/config/station.xml",而桌面路径下当然不可能存在对应的文件。
问题是由于程序启动时根据当前程序的默认目录下再去查找配置文件"resource/config/station.xml",这时由于快捷方式启动时指向的默认目录不同就可能会导致配置文件加载失败的情况。
为了解决这个问题,程序启动时加载配置文件需要使用绝对路径获取配置文件信息,这时不管程序启动时默认指向的是哪个目录,只要能够定位到程序的安装目录就能够获取到配置文件信息。
///
\\n///默认页面url配置文件\\n///\\npublicstaticstringindexurlfile="resource/config/station.xml";\\n\\n///
\\n///获取默认界面url\\n///\\n///
\\npublicstaticstringgetindex\\n{\\nstringurl="";\\nstringurlpath=path.combine(system.windows.forms.application.startuppath,indexurlfile);\\nxmldocumentxmldoc=newxmldocument();\\n\\nif(!file.exists(urlpath))\\n{\\nthrownewexception("配置文件不存在");\\n}\\nxmldoc.load(urlpath);\\nif(xmldoc==null)\\n{\\nthrownewexception("配置文件读取失败");\\n}\\nxmlnodelistindexlist=xmldoc.getelementsbytagname("index");\\nif(indexlist.count==0||indexlist[0].attributes.count==0)\\n{\\nthrownewexception("配置文件格式不正确");\\n}\\nurl=indexlist[0].attributes[0].value;\\nif(string.isnullorempty(url))\\n{\\nthrownewexception("配置文件格式不正确");\\n}\\nreturnurl;\\n}
这里通过system.windows.forms.application.startuppath获取启动了应用程序的可执行文件的路径,不包括可执行文件的名称,然后再拼接配置文件信息,这时就可以通过绝对路径获取到配置文件信息。
这样在任务栏通过快捷方式也能够正常打开程序了。
system.windows.forms.application.startuppath
获取启动了应用程序的可执行文件的路径,不包括可执行文件的名称
system.windows.forms.application.executablepath
获取启动了应用程序的可执行文件的路径,包括可执行文件的名称
system.appdomain.currentdomain.setupinformation.applicationbase
获取包含该应用程序的目录的名称
读取配置文件失败和英雄联盟读取配置文件失败的问题分享结束啦,以上的文章解决了您的问题吗?欢迎您下次再来哦!
js555888金沙老品牌的版权声明:
本站内容部分来源网络,js555888金沙老品牌的版权归作者所有,如有侵权,请联系js555888金沙老品牌删除!