我需要在Tomcat上运行一个web-app,但它无法在Tomcat上读取txt文件(来自下面的相对路径)。但是,如果我使用完整路径,它确实有效。
所以我想知道在哪里可以放置这些txt文件,以便在Tomcat启动时,应用程序可以从相对路径成功读取txt文件。
目前,项目结构如下,txt文件与Eclipse中Project Explorer中的src文件位于同一目录中。
Project_Name
src
java files
EDGES.txt
NODES.txt
代码如下,如果有人可以给我一个详细的答案我很感激,因为我对Java很新。
代码如下:
public class RouteingDao {
NodeJSONReader nodeInput = new NodeJSONReader("NODES.txt");
EdgeJSONReader edgeInput = new EdgeJSONReader("EDGES.txt");
...
}
NodeJSONReader / EdgeJSONReader类如下:
public class EdgeJSONReader {
private EdgeEntity[] edgeEntity;
// constructor
public EdgeJSONReader(String JSON_FILE) {
edgeEntity = readEntityFromFile(JSON_FILE);
}
// load the JSON data from local file
public EdgeEntity[] readEntityFromFile(String JSON_FILE) {
try {
Reader reader = new FileReader(JSON_FILE);
Gson gson = new Gson();
edgeEntity = gson.fromJson(reader, EdgeEntity[].class);
}
...
}
}
如果您正在使用servlet,则访问servlet上下文和getRealPath方法。
this.getServletContext().getRealPath("WEB-INF/nodes.txt")
发送到getRealPath的相对路径将扩展到Web应用程序的文件位置。您可以添加任何您喜欢的路径,甚至可以添加到WEB-INF中的隐藏文件。
从您可以使用的JSP
${pageContext.servletContext.getRealPath("WEB-INF/nodes.txt")}
请注意,这将在build目录中,因此对nodes.txt的任何更改都不会保存到原始文件中。