2010-10-08 40 views
8

我需要从Java WAR应用程序的类路径中读取文本文件。我怎样才能读取它作为InputStream。文件位于/ WEB-INF/classes /文件夹中,但是当我使用下面的代码时,它只是返回null。如何从我的WAR中的classes目录读取文件?

InputStream input = servletContext.getClass().getClassLoader().getResourceAsStream("my_filename.txt"); 

回答

11

正斜杠前缀它表示classpath的根目录:

getResourceAsStream("/my_filename.txt") 

或者,你可以使用serlvetContext.getResourceAsStream(..)看起来相对于上下文根的资源。所以课程将是/WEB-INF/classes

+0

我也试过,但它仍然返回null。 servletContext是否有正确的类加载器,或者如何确定我正在使用正确的类加载器? – newbie 2010-10-08 06:49:57

+0

@newbie:。一个诀窍是如果你不能读取,在相同的位置写入一个相同名字的文件,然后看看程序是在哪里写入文件的。 – 2010-10-08 06:57:06

+0

@newbie是肯定存在的文件吗?具有相同的名称,扩展名和大小写? – Bozho 2010-10-08 07:06:06