如何从servlet到www目录中的文件?

时间:2011-06-21 13:23:29

标签: java servlets tomcat6

使用tomcat 6,我在www / templates / templatefile.html

中创建了一个模板

如何从servlet访问它?我想阅读html文件并解析它。

我尝试使用request.getRealPath(request.getServletPath())获取真实路径 并从那里转到模板目录但由于某种原因它仍然无法找到该文件。

1 个答案:

答案 0 :(得分:3)

假设www是公共Web内容根目录中的文件夹,那么您可以使用ServletContext#getRealPath()将相对Web路径转换为绝对磁盘文件系统路径,如下所示:

String relativeWebPath = "/www/templates/templatefile.html";
String absoluteDiskPath = getServletContext().getRealPath(relativeWebPath);
File file = new File(absoluteDiskPath);
InputStream input = new FileInputStream(file);
// ...

请注意,当未扩展WAR时,这将不起作用(默认修剪中的Tomcat会执行此操作,但可以配置为不执行此操作)。如果你想要的最终结果是InputStream,那么你更愿意使用ServletContext#getResourceAsStream()

String relativeWebPath = "/www/templates/templatefile.html";
InputStream input = getServletContext().getResourceAsStream(relativeWebPath);
// ...