サーブレットでファイルをロードし、.getClassLoader().getResourceAsStream(path) を使用します。パスは WEB-INF/classes ディレクトリにあります。パス ファイルの内容を変更した後に見つけましたが、ファイル サーブレットのロードは同じです。変更しないでください。 、ファイルがキャッシュされます。
コード例:
このメソッドは、test.key コンテンツを変更した後、常に同じ結果を取得します。
private String getKey(String param){
String name = "keys/"+param+"/test.key";
InputStream in = XXXServlet.class.getClassLoader().getResourceAsStream(name);
StringBuilder builder = new StringBuilder();
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
String line = null;
while((line = reader.readLine()) != null){
builder.append(line).append("\n");
}
} catch (IOException ignoreException) {
}finally{
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
String result = builder.toString();
return result;
}
================================================== ===============
これらの 2 行のコードを変更すると、正常に動作します
String name = "/WEB-INF/classes/keys/"+param+"/test.key";
InputStream in = getServletContext().getResourceAsStream(name);