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

问题描述 投票:0回答:1

我需要在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);
        } 
        ...
    }
}
java tomcat relative-path
1个回答
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的任何更改都不会保存到原始文件中。

© www.soinside.com 2019 - 2024. All rights reserved.