java 获取绝对路径与getRealPath

getRealPath()是个被标记为遗弃的一个获取当前路径的方法,被标记为遗弃的原因又是什么? 

getRealPath("/")在不同的服务器上所获得的实现是不一样的,对一个打包的应用来说,是没有RealPath的概念的,调用getRealPath只会简单地返回null。一个文件被打包入了.war文件,就不存在目录结构了(虽然包中仍然存在目录结构,但这不等同于文件系统中的目录结构)。所以,对war包中的资源是无法得到RealPath的。这样也就无从通过文件IO进行读取了, 因此被标为遗弃。

获取绝对路径的方法:

this.getClass().getClassLoader().getResource("/").getPath(); 此处为classes目录, 往上一层可以用getResource("/../"),

直接指向文件名getResource("/../xxx.xxx")

继承了 HttpServlet 类,也可用此方法:

getServletContext().getResource("/"), 要注意,getServletContext()可能会返回null

你可能感兴趣的:(JAVA)