0

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

这是代码:

@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。感谢您的帮助,

马克西

4

3 回答 3

5

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

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

您的问题与如何从我的 WAR 中的类目录中读取文件类似(我认为)?

于 2013-01-31T13:48:29.827 回答
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"));
于 2013-01-31T13:50:37.310 回答
1

您不会发布实际尝试读取文件的代码,但假设文件位于类路径中(正如您提到的那样,它与类位于同一目录中),那么您可以执行以下操作:

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

这里

于 2013-01-31T13:47:37.323 回答