从Tomcat上的相对路径读取文件

时间:2015-12-30 00:14:13

标签: java tomcat relative-path

我需要在Tomcat上运行一个web-app,但它无法在Tomcat上读取txt文件(来自下面的相对路径)。但是,如果我使用完整路径,它确实有效。

所以我想知道在哪里可以放置这些txt文件,以便在Tomcat启动时,应用程序可以从相对路径成功读取txt文件。

目前,项目结构如下所示, txt文件与Project Explorer src文件位于同一目录中>在Eclipse中。

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);
        } 
        ...
    }
}

1 个答案:

答案 0 :(得分:1)

如果您正在使用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的任何更改都不会保存到原始文件中。