【发布时间】:2015-11-19 15:34:25
【问题描述】:
我正在寻找访问资源文件(例如一堆 .xml 文件)以及它们所在的文件夹结构的“最佳实践”方式,而不管使用的是什么应用程序服务器。
现在我正在使用 Wildfly 8 服务器,我通过获取应用程序的真实路径来访问所有 src/main/resources/xxxx,然后使用 Paths.get(resourcePath) 以及 Files.walk(Paths.get(folderPath)) 如果我想访问文件夹的文件。
但是,当我尝试部署到 Weblogic 12c 时遇到了一个问题,因为此应用服务器实际上获取了 WEB-INF/classes 下的所有内容并创建了一个 .jar 文件并将其添加到 WEB-INF/lib。我仍然可以使用classLoader.getResource(resourcePath) 访问单一资源,但由于某种原因,当我尝试创建new File(Paths.get(resourcePath) 或使用Files.walk(Paths.get(folderPath)) 时,它似乎不起作用。它抛出一个异常,说文件不存在,我猜是因为它被打包在一个 jar 文件中,因此无法访问。
我可能会使用classLoader.getResource(resourcePath) 访问我的所有资源,但不幸的是,在我的情况下,我不知道在编译时哪些资源可用。我特别需要能够浏览选定文件夹的文件和子文件夹,但我还没有找到在两个应用服务器或所有应用服务器上执行此操作的通用方法。
如果解决方案使用新的 File api 而不是创建一堆 FileReader,则可以加分,但我也可以。
【问题讨论】: