如何从资源文件夹中获取文件。 Spring框架

我正在尝试解组我的xml文件:

public Object convertFromXMLToObject(String xmlfile) throws IOException { FileInputStream is = null; File file = new File(String.valueOf(this.getClass().getResource("xmlToParse/companies.xml"))); try { is = new FileInputStream(file); return getUnmarshaller().unmarshal(new StreamSource(is)); } finally { if (is != null) { is.close(); } } } 

但我得到这个错误:java.io.FileNotFoundException:null(没有这样的文件或目录)

这是我的结构:

在此处输入图像描述

为什么我无法从资源文件夹中获取文件? 谢谢。

更新。

重构后,

URL url = this.getClass()。getResource(“/ xmlToParse / companies.xml”); 文件file = new File(url.getPath());

我可以更清楚地看到错误:

java.io.FileNotFoundException:/content/ROOT.war/WEB-INF/classes/xmlToParse/companies.xml(没有这样的文件或目录)

它试图找到WEB-INF / classes /我在那里添加了文件夹,但仍然收到此错误:(

在此处输入图像描述

尝试将一些XML文件加载到我的测试类中时遇到了同样的问题。 如果您使用Spring,可以从您的问题中建议,最简单的方法是使用org.springframework.core.io.Resource–一个Raphael Rot h已经提到过。

代码非常简单。 只需声明一个org.springframework.core.io.Resource类型的字段,并使用org.springframework.beans.factory.annotation.Value注释它 – 就像这样:

 @Value(value = "classpath:xmlToParse/companies.xml") private Resource companiesXml; 

要获得所需的InputStream,只需调用即可

 companiesXml.getInputStream() 

你应该没事:)

但请原谅我,我要问一件事:为什么你想在Spring的帮助下实现XML解析器? 有很多内置:)例如,对于Web服务,有非常好的解决方案将您的XML编组到Java对象中并返回…

 ClassLoader classLoader = getClass().getClassLoader(); File file = new File(classLoader.getResource("fileName").getFile()); 

你假设给出一个绝对路径(所以添加一个加载’/’,其中resource-folder是根文件夹):

 public Object convertFromXMLToObject(String xmlfile) throws IOException { FileInputStream is = null; File file = new File(String.valueOf(this.getClass().getResource("/xmlToParse/companies.xml"))); try { is = new FileInputStream(file); return getUnmarshaller().unmarshal(new StreamSource(is)); } finally { if (is != null) { is.close(); } } }