这是我的netBeans项目的内容:
要使用名为“ErrorSet”的文件夹,请使用以下行:
File file = new File("ErrorSet/error_list.xml");
有必要导入此文件,因为它包含自定义错误代码:
如果要在netbeans项目中导入内容,则使用文件的默认“root”是项目名称文件夹,如[projectName] /ErrorSet/error_list.xml ...
在tocmat7中从dist文件夹部署[projectName] .war时,我需要放置ErrorSet文件夹,以便我可以正确使用新文件? File(“ErrorSet / error_list.xml”)父目录在tomcat7中变成了什么?
答案 0 :(得分:1)
请注意,Web Pages
和Source packages
是不同的事情。
要将Source packages
内的类与自定义文件一起使用,您必须将文件放在Package
内并使用getClass().gerResource()
,如下所示:
如果ErrorSet
文件夹是另一个包内的文件夹,请使用:
File file = new File(getClass().getResource("ErrorSet/error_list.xml").toURI());
如果error_list.xml
与课程在同一个包中,只需使用getResource("error_list.xml")
。
答案 1 :(得分:1)
请勿使用java.io.File
。
相反,请使用您可以从ClassLoader
获取的流,如下所示:
InputStream in = null;
try {
in = request.getServletContext().getResourceAsStream("/WEB-INF/ErrorSet/error_list.xml");
if(null != in) {
// read the XML
}
} finally {
if(null != in) try { in.close(); }
catch (IOException ioe) { /* log this */ }
}
现在,将您的文件放入部署中的/WEB-INF/ErrorSet/error_list.xml
。
无论文件是在文件系统上还是打包在未爆炸的WAR文件中,这都将起作用。它也可以在安装了SecurityManager的环境中工作,该环境不允许Web应用程序读取文件,因为servlet容器可能 具有读取这些文件的权限。