读取config xml文件时出现java FileNotFoundException

时间:2018-03-09 07:48:15

标签: java filenotfoundexception

我需要从我的DYNAMIC WEB PROJECT中读取一个config.xml文件。 我已将我的文件放在文件夹结构MyProj / WebContent / WEB-INF / classes / config.xml文件夹中。 当我打印文件的绝对路径时  新文件(config.xml).getAbsolutePath() 它检查eclipse主目录(C:\ Temp \ eclipse \ eclipse)而不是我的项目主目录(C:\ Temp \ MyProj)。 因此我得到了问题FIleNotFoundException。 如何告诉eclipse检查项目目录中的文件?

在eclipse IDE中使用tomcat 7.

1 个答案:

答案 0 :(得分:0)

如果您的项目是动态Web应用程序,则意味着您应该遵守JEE规则,其中一条规则是:不要使用Files但要使用资源。您的Web应用程序将部署在可以安装在任何位置的Web容器(如Tomcat)中。通过将配置文件作为资源访问,可以在类路径中搜索它们,该类路径更灵活,独立于Web应用程序或容器的绝对文件位置。

如果将config.xml放在WEB-INF / classes中,它将在您的类路径中。 您应该将其作为资源而不是文件来访问。

我建议您提高您对如何在java中管理和访问资源的了解。

在课堂上你可以做到:

InputStream configInput=this.getClass().getResourceAsStream("/config.xml");

当它接缝为XML文件时,您可以使用XML解析器读取它:

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.xml.sax.SAXException;
...
    try {
        DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
        Document doc = dBuilder.parse(this.getClass().getResourceAsStream("/config.xml"));
    } catch (ParserConfigurationException | SAXException | IOException e) {
        e.printStackTrace();
    }