如果它被放置在webapp的类路径,然后只需使用:
InputStream input = servletContext.getResourceAsStream("file.txt");
如果它被放置在全局类路径,然后使用:
InputStream input = Thread.currentThread().getContextClassLoader().getResourceAsStream("file.txt");
如果它被放置在WebContent ,那么只需使用:
InputStream input = new FileInputStream(servletContext.getRealPath("file.txt"));
这些示例假定它们放在根中。您当然可以使用相对路径而不是类路径根或web内容根,例如path/to/file.txt
。您可以通过ServletActionContext#getServletContext()
获得Struts中的ServletContext
。
编辑:您有以下编辑你的问题:
编辑:谢谢你们的答案。对我来说,这个工作:
String path=GetPointsOfInterestAction.class.getResource("../../../resources/visitor_attractions.txt")
能否请您解释一下为什么
这实际上不是“正确”的方式,而这也是可行的。您只需确保您知道知道相对于文件的路径,而不是GetPointsOfInterestAction
类的实际路径。这个类当然放在一个不同的包中,所以你基本上需要返回一个目录(就像在普通的磁盘文件系统中一样:cd ../
等等)。再次,这不是最优雅的方式。您需要使用上述前两种方法之一,资源名称为resources/visitor_attractions.txt
。
Yeap。问题是如果我尝试在常量中读取它,它将返回null。这似乎是一个错误的设计决定。 – 2009-11-23 15:30:25