【问题标题】:Reading files from relative paths on Tomcat从Tomcat上的相对路径读取文件
【发布时间】:2015-12-30 00:14:13
【问题描述】:

我需要在 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);
        } 
        ...
    }
}

【问题讨论】:

  • 那么,这是有问题的行之一:NodeJSONReader nodeInput = new NodeJSONReader("NODES.txt");?你能添加你的项目结构吗?
  • 是的,我已经像上面那样添加了。 @工程师
  • 你能帮我解答一下吗? @工程师

标签: java tomcat relative-path


【解决方案1】:

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

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

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

您可以从 JSP 中使用

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

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

【讨论】:

  • 嗨,我没有使用 servlet。那我该怎么办? @downeyt
  • @Thomas 如果您在 Tomcat 中,您正在使用 servlet 或过滤器。无论哪种情况,您都需要使用此答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-16
  • 1970-01-01
  • 2014-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多