我想打开一个文件并返回其内容。虽然它与想要打开文件的类在同一目录中,但找不到该文件。如果你能帮助我解决这个问题会很酷。
以下是代码:
@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。谢谢你的帮助,
全型
答案 0 :(得分:5)
如果文件在应用程序WAR内(或在jar中),您可以尝试使用
InputStream input = servletContext.getClass().getClassLoader().getResourceAsStream("my_filename.txt");
类似(我认为)
答案 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