当前位置: 首页 > 知识库问答 >
问题:

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

齐奕
2023-03-14

我正在尝试散集我的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 file=new File(url.getPath());

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

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

它试图找到WEB-INF /类/我已经在那里添加了文件夹,但仍然得到这个错误:(

共有3个答案

傅越
2023-03-14

假设您给出了一个绝对路径(因此添加一个加载“/”,其中资源文件夹是根文件夹):

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();
        }
    }
}
司徒兴思
2023-03-14
ClassLoader classLoader = getClass().getClassLoader();
File file = new File(classLoader.getResource("fileName").getFile());
袁弘化
2023-03-14

我在尝试将一些XML文件加载到测试类中时遇到了同样的问题。如果您使用Spring,正如您的问题所建议的那样,最简单的方法是使用org.springframework.core.io。资源——拉斐尔·罗斯已经提到的资源。

代码非常简单。只需声明一个org . spring framework . core . io . resource类型的字段,并用org . spring framework . beans . factory . annotation . value对其进行注释——就像这样:

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

要获取所需的InputStream,只需调用

companiesXml.getInputStream()

而且你应该没事:)

但是请原谅,我必须问一件事:为什么要在Spring的帮助下实现XML解析器?有很多内置的:)例如,对于web服务,有非常好的解决方案可以将XML编组到Java对象中,然后再编组回来。。。

 类似资料:
  • 问题内容: 我在项目的根目录中有一个资源文件夹/程序包,我“不想”加载某个文件。如果我想加载某个文件,我将使用class.getResourceAsStream,我会很好的!我实际上想要做的是在资源文件夹中加载一个“文件夹”,循环访问该文件夹中的文件,并获取每个文件的流,并读取内容…假设在运行时之前未确定文件名… 我该怎么办?有没有一种方法可以获取jar文件中“文件夹”中文件的列表?请注意,带有资

  • 如何从资源文件夹的子文件夹中读取文件。 我在资源文件夹中有一些json文件,例如: 现在我想在我的课堂上读到这个 这是我正在尝试的,但是失败了。 不起作用,那么我正在尝试: 这两样东西都不工作。

  • 问题内容: 我正在使用Spring Boot和。我正在尝试从文件夹读取一个文件。我尝试了几种不同的方法,但无法正常工作。这是我的代码。 这是文件的位置。 在这里,我可以看到文件夹中的文件。 但是,当我运行代码时,出现以下错误。 我在代码中做错了什么? 问题答案: 在花费大量时间尝试解决此问题之后,终于找到了可行的解决方案。该解决方案利用了Spring的ResourceUtils。也应该适用于jso

  • 我有一个名为的项目,它有以下结构: 所以这两个文件的路径是: 我想读测试文件。TestDataProvider中的json。JAVA 我曾经用过 我看到从URL res=getClass(). getClassLoader(). getResources("testfile.json")返回; 有人能帮我吗?

  • 问题内容: 我知道如何使用读取带有的目录,但是对于我的特殊用例,我需要一个。我需要一个专门的原因是因为我需要通过调用从它获取对象。 这是我到目前为止的代码,它从中读取数据(在我的情况下为原语列表): 我曾尝试通过创建一个,但这只会导致: 有没有一种方法,我可以得到一个在目录中? 问题答案: 您可以像这样获取资产中的资源: 在您提供的 应该是资产的相对路径,同样你会提供给。 或者,您也可以这样创建:

  • 如何使用URI从资源文件夹的子文件夹中读取文件 资源文件夹中有一些json文件,如: 现在我想在我的课堂上读这个 这是我正在尝试的。 我的东西工作正常,但我遇到的问题是我不想使用< code>toURI,因为它会失败。