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

问题描述 投票:69回答:4

我具有以下目录布局:

  • src
    • 主要
      • java
      • 资源
        • sql(数据库脚本)
        • 弹簧(配置)
      • 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主要java资源sql(数据库脚本)spring(配置)webapp在ServletContextListener类中,...

java spring io
4个回答
59
投票

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


50
投票

最后,这就是我所做的:


15
投票
import org.springframework.core.io.ClassPathResource;

...

File folder = new ClassPathResource("sql").getFile();
File[] listOfFiles = folder.listFiles();

3
投票

只需使用com.google.common.io.Resources

© www.soinside.com 2019 - 2024. All rights reserved.