在Tomcat中打开相对于contextPath定位的文件

时间:2018-11-13 16:30:03

标签: java file tomcat web-applications relative

我需要打开一个文件,该文件位于与部署到Tomcat的Java应用程序的contextPath相关的目录中。我要打开的文件是:

/ c /程序文件/Java/tomcat9/webapps/mymap/WEB-INF/classes/static/data/Demo-init.owl

我的Tomcat目录结构如下:

kcason@36CRNN2 MINGW64 /c/Program Files/Java/tomcat9/webapps/mymap/WEB-INF/classes/static/data
$ ls -l
total 12612
-rw-r--r-- 1 kcason 1049089  189827 Nov 12 11:40 Demo-init.owl

在询问Tomcat的contextPath在哪里时,它返回“ / mymap”,相对于Tomcat webapps目录而言是正确的。

@Autowired
private HttpServletRequest httpServletRequest;

public HttpServletRequest getHttpServletRequest() {
    return httpServletRequest;
}

String contextPath = getHttpServletRequest().getContextPath();
System.out.println("upload - contextPath: " + contextPath);

输出为:

upload - contextPath: /mymap

但是,如果我尝试打开:

contextPath +“ /WEB-INF/classes/static/data/Demo-init.owl”

...它试图打开:

c:/mymap/WEB-INF/classes/static/data/Demo-init.owl

如果我尝试打开:

“ ./” + contextPath +“ /WEB-INF/classes/static/data/Demo-init.owl”

...它试图打开:

c:/crap//WEB-INF/classes/static/data/Demo-init.owl“

...因为我是从 c:/ crap 启动Tomcat的。

我正在尝试使用以下方法查看我是否具有正确的目录路径:

  rootDirectory = ctx.getContextPath();
  staticDirectory = rootDirectory + "/WEB-INF/classes/static/data";
  File file = new File(staticDirectory);
    if (!file.isDirectory()) {
        System.out.println("oops!");
  }

该Web应用程序可能会移动到另一个web服务器目录路径不同的Tomcat服务器,因此我无法对此进行硬编码,这还是很危险的。

如何获取…/ mymap目录的正确完整路径,或者至少打开相对于该文件的文件?

0 个答案:

没有答案