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

13 浏览
0 Comments

如何从资源文件夹中获取文件。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(没有这个文件或目录)

这是我的结构:

enter image description here

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

更新。

重构后,

URL url = this.getClass().getResource("/xmlToParse/companies.xml");

File file = new File(url.getPath());

我能更清楚地看到一个错误:

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

它试图找到WEB-INF/classes/

我已经在那里添加了文件夹,但仍然得到这个错误:(

enter image description here

0
0 Comments

问题的原因是无法从资源文件夹中获取文件。解决方法是给定一个绝对路径,通过在资源文件夹的路径前加上斜杠来指定根目录。代码如下:

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();
        }
    }
}

检查资源文件夹是否包含在部署程序集中。如果没有,需要将其绑定到程序中。是否有一种简单的方法来实现这一点?

0
0 Comments

问题的原因是作者想从资源文件夹中获取文件,但是在部署到开发环境时无法解析文件路径。解决方法是使用Spring框架的Resource类来获取文件,并使用@Value注解来指定文件路径。

解决方法的具体步骤如下:

1. 声明一个字段,类型为org.springframework.core.io.Resource,并使用@Value注解来指定文件路径。例如:

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

2. 调用companiesXml.getInputStream()方法来获取所需的InputStream对象。

另外,作者还询问了为什么要使用Spring来实现XML解析器,因为有很多内置的解决方案可以将XML解析为Java对象,并进行反向操作。作者提供了一个相关的stackoverflow链接来说明他尝试的解决方案无法正常工作。

总之,通过使用Spring框架的Resource类和@Value注解,可以方便地从资源文件夹中获取文件,并解决在部署到开发环境时无法解析文件路径的问题。

0
0 Comments

从resources文件夹中获取文件是在Spring Framework中常见的需求。然而,有时候在部署Spring项目为jar文件后,上述代码无法正确获取资源文件。下面是解决这个问题的方法。

解决该问题的方法是使用Spring的ResourceLoader接口。首先,注入一个ResourceLoader对象到你的类中。

@Autowired
private ResourceLoader resourceLoader;

然后,使用ResourceLoader对象的getResource方法来获取资源文件。

Resource resource = resourceLoader.getResource("classpath:fileName");
File file = resource.getFile();

通过使用ResourceLoader接口,我们可以在不同的环境下正确获取资源文件,包括在jar文件中。

以上就是解决从resources文件夹获取文件的问题的方法。希望这个方法对你有帮助!

0