java - 如何以编程方式获取资源目录路径

标签 java spring io

我有以下目录布局:

  • src
    • main
      • java
      • resources
        • sql (scripts for database)
        • spring (configuration)
      • webapp

在 ServletContextListener 类中,我想访问 SQL 目录下的文件并列出它们。基本上我的问题在于路径,因为我知道简而言之,列出目录下的文件是:

File folder = new File(path);
File[] listOfFiles = folder.listFiles();

也许我可以使用 ServletContextEvent 对象来尝试构建到 resources/sql

的路径
public void contextInitialized(ServletContextEvent event) {
    event.getServletContext(); //(getRealPath etc.)
}

是否存在以相对、非硬编码的方式设置该路径的东西? 像 new File("classpath:sql") 之类的东西(如果可能的话最好是 spring)或者我应该用 servletContext 做什么来指向 resources/sql

最佳答案

我假设 src/main/resources/ 的内容在构建时被复制到您的 .war 中的 WEB-INF/classes/ 中。如果是这种情况,您可以这样做(用实际值替换类名和正在加载的路径)。

URL sqlScriptUrl = MyServletContextListener.class
                       .getClassLoader().getResource("sql/script.sql");

关于java - 如何以编程方式获取资源目录路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19414453/

相关文章:

java - 优化循环更新请求

spring - 比 Spring Security 上的 Basic-est 问题还要基础?

FFmpeg:如何打开名称中带有撇号的文件?

java - 为什么 Double.infinite 不为无限分数返回 true?

java - 创建数据库时将数据添加到sqlite数据库

java - 如何开启Spring WebFlux的访问日志?

java - 在 Spring 中以编程方式启用和禁用某些 @RabbitListener?

java - Android非阻塞文件I/O?

C - 将文本中的值存储到数组中

java - 堆外、 native 堆、直接内存和 native 内存有什么区别?