我正在编写一个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文件,这些文件最终将提供给用户。
答案 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
我希望它有所帮助。:)