我有以下目录布局:
- 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/