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");

あなたの問題は (私が思うに) How can I read file from classes directory in my WAR?と似ています。

于 2013-01-31T13:48:29.827 に答える
4

ServletContextからファイルのパスを取得してみてください。

ServletContext context = //Get the servlet context

JAX-RS でサーブレット コンテキストを取得するには、次のようにします。

@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 に答える