JavaEE web - 从/ src / main / resources访问文件

时间:2014-05-22 01:07:23

标签: java java-ee jboss glassfish

我正在编写一个Web应用程序,我需要访问两个文件(xlsx)文件。我不确定我将使用哪个Web服务器(Tomcat,Glassfish或其他)。

在我的应用程序中,我有一个文件位于:

/src/main/resources/Analysis_Template.xlsx

我正试图弄清楚如何从代码中访问它。

以下代码在 WildFly 中似乎“有点”工作但在 GlassFish

中没有
URI templateURI = this.getClass().getResource("/Analysis_template.xlsx").toURI();
File f = new File(templateURI.getPath());

虽然此代码没有崩溃f.canRead()返回false,所以我认为它可能无效。当我尝试在GlassFish下运行时,事情进展不顺利并且在java.lang.NullPointerException

的第一行代码上直接崩溃了

任何建议我都确定它非常明显我只是错过了它。

---编辑和笔记 -

[我最终得到了一个WAR档案]

使用 WildFly ,文件为:

/usr/local/opt/wildfly-as/libexec/standalone/deployments/fleetForecast-1.0-SNAPSHOT.war/WEB-INF/classes/ANALYSIS_template.xlsx

Glassfish 据我所知,netbeans报道:就地部署

~/devel/fleetforecast/target/fleetForecast-1.0-SNAPSHOT

我找到了我的档案:

~/devel/fleetforecast/target/fleetForecast-1.0-SNAPSHOT/WEB-INF/classes/ANALYSIS_template.xlsx

我必须将此文件读入File对象以传递给某些代码以创建一组XLSX文件,这些文件最终将提供给用户。

1 个答案:

答案 0 :(得分:1)

试试这样。打包war文件时,/ src / main / resources中的任何文件都会在webapp的根级别结束。我认为你也应该更喜欢在getResource上使用getResourceAsStream,因为后者只能从文件系统中读取文件。

BufferedReader br = new BufferedReader(new InputStreamReader(getClass().getResourceAsStream("/Analysis_template.xlsx")));
// Now do something with br

我希望它有所帮助。:)