在tomcat Web应用程序中打开一个文件

时间:2013-01-31 13:41:09

标签: java file tomcat jersey

我想打开一个文件并返回其内容。虽然它与想要打开文件的类在同一目录中,但找不到该文件。如果你能帮助我解决这个问题会很酷。

以下是代码:

@GET @Produces("text/html") @Path("/{partNO}/") @Consumes("text/html")
public String getPartNoResponseHTML(@PathParam("partNO") String parID) throws WebApplicationException {
PartNoTemplate partNo = getPartNoResponse(parID);

String result = "";

try {
  result = readFile(PART_NO_TEMPLATE_FILE);
} catch (FileNotFoundException e) {
  e.printStackTrace(System.out);
  return e.getMessage() + e.toString();
  // throw new WebApplicationException(Response.Status.NOT_FOUND);
} finally {
  result = result.replace("{partNO}", parID);
  result = result.replace("{inputFormat}", partNo.getFormat().toString());
}

return result;
}

我猜它找不到文件,因为它在tomcat上运行。我也在使用Jersey和JAX-RS。谢谢你的帮助,

全型

3 个答案:

答案 0 :(得分:5)

如果文件在应用程序WAR内(或在jar中),您可以尝试使用

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

您的问题与How can I read file from classes directory in my WAR?

类似(我认为)

答案 1 :(得分:4)

尝试从ServletContext获取文件的路径。

ServletContext context = //Get the servlet context

在JAX-RS中获取servlet上下文使用:

@javax.ws.rs.core.Context 
ServletContext context;

然后从您的Web应用程序中获取文件:

File file = new File(context.getRealPath("/someFolder/myFile.txt"));

答案 2 :(得分:1)

您不发布实际尝试读取文件的代码,但假设该文件位于类路径中(正如您提到的那样,它位于与该类相同的目录中),那么您可以这样做:

InputStream in = this.getClass().getResourceAsStream("/SomeTextFile.txt");

请参阅here