在我的appconfig.xml中,我有:
<resource-files>
<include path="/emailtemplates/**.html" />
</resource-files>
当我尝试阅读文件时,我总是得到FileNotFoundException
。我已经尝试过,有没有尾随/
,但它没有任何区别。我还检查了打包应用程序中存在的文件。
我的项目由模块组成,我在Windows上的本地开发系统上尝试这个。我在这里做错了吗?
答案 0 :(得分:1)
src\main\resources\*
this.getClass().getResource("/" + filename).getPath()
来获取完整路径(请注意,在这种情况下,&#39; /&#39;指的是资源所在的根。通常&#39; /& #39;将引用文件系统中的根目录或Java中的工作目录new FileInputStream(pathFromAbove)
我的pom.xml配置为包含我的资源:
<build>
<outputDirectory>${project.build.directory}/${project.build.finalName}/WEB-INF/classes</outputDirectory>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
</includes>
</resource>
</resources>
...
答案 1 :(得分:0)
首先,我将资源文件夹移动到WEB-INF文件夹中。优点是我的appengine-web.xml中不需要任何额外的配置,这可以消除一点故障。
其次,我现在使用ServletContext来获取资源文件的完整路径。在我使用path
作为new File
的参数并且不起作用之前。在我认为的文档中,这没有出现。所以我的工作代码来读取文本文件如下:
StringBuilder sb = new StringBuilder();
Scanner scanner = new Scanner(new File(context.getRealPath(path)), "UTF-8");
while (scanner.hasNextLine())
sb.append(scanner.nextLine());
scanner.close();