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

标签 java tomcat relative-path

我需要在 Tomcat 上运行一个网络应用程序,但它无法读取 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);
        } 
        ...
    }
}

最佳答案

如果您使用的是 servlet,则访问 servlet 上下文和 getRealPath 方法。

this.getServletContext().getRealPath("WEB-INF/nodes.txt")

发送到 getRealPath 的相对路径将扩展到您的网络应用程序文件的位置。您可以添加任何您喜欢的路径,甚至可以添加到 WEB-INF 中的隐藏文件。

从您可以使用的 JSP

${pageContext.servletContext.getRealPath("WEB-INF/nodes.txt")}

请注意,这将位于构建目录中,因此对 nodes.txt 的任何更改都不会保存到原始文件中。

关于java - 从 Tomcat 上的相对路径读取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34521166/

相关文章:

regex - 如何在 bash 中从绝对路径创建相对路径?

javascript - NodeJS - 将相对路径转换为绝对路径

apache-flex - BlazeDS Servlet 未通过代理响应

tomcat - 在 Netbeans 中自动部署 Liferay portlet

java - 将 JDBC 驱动程序与 Web 应用程序中的 Java 类一起使用

java - 垂直对齐的组件在运行时一起移动

c - 我如何让 C 识别未正确安装的库?

java - 通过 Java 创建 Kafka 主题时出错

java - 如何用Java封装ArrayList

java - 如何缓存游标对象?