【问题标题】:why I cannot read a file from Spring-boot's app resources directory?为什么我无法从 Spring-boot 的应用程序资源目录中读取文件?
【发布时间】:2020-09-30 12:32:09
【问题描述】:

似乎无论我做什么我都无法从我的 Spring-boot 应用程序的资源目录中读取文件。

有什么想法吗?

会不会是我调用读取文件的方法的方式?

@SpringBootApplication
public class DemostoreApplication {

public static void main(String[] args) throws IOException {

    SpringApplication.run(DemostoreApplication.class, args);
}

@EventListener(classes = ApplicationStartedEvent.class)
public void applicationStarted() {
    loadAFile();
}

void loadAFile(){
    InputStream inputStream = getClass().getResourceAsStream("user-data.txt");
   }
}

我可以看到有很多这样的问题,大部分都没有答案。我已经尝试了所有这些命题。

【问题讨论】:

  • 我怀疑你尝试了所有这些。使用spring资源加载机制。使用ClassPathResource 加载此内容。
  • 我更好奇为什么示例代码中的方法不起作用。
  • 因为它从类的位置加载文件,所以文件应该在类的旁边。因此,您要么需要在根目录下添加 / 前缀,要么使用类加载器(而不是类)来加载资源。使用 Spring ClassPathResource 时,它总是从根目录开始,防止你犯这个错误。

标签: spring-boot file


【解决方案1】:

是的,我去回答。

应该添加一个/,表示相对于项目的根目录!

否则,该文件将在相对于类包的目录中查找。真傻。

这是有效的:

InputStream is = getClass().getResourceAsStream("/user-data.txt");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-09
    • 2017-11-08
    • 2018-03-05
    • 1970-01-01
    相关资源
    最近更新 更多