众所周知,servlet、JSP获得当前目录,我们可以使用System.getProperty(“user.dir”)或者request.getRealPath(“/“)还有request.getContextPath()等方法,但是今天要说的是在JavaBean里面如何获得classes及WEB-INF目录
获取classes目录可以使用以下几个方法:
使用this.getClass()
1 | this.getClass().getClassLoader().getResource("").getPath(); |
可以直接获得classes目录,比如C:/xampp/tomcat/webapp/root/WEB-INF/classes
如果要获得当前文件所在目录或者说是当前classes所在目录可以使用下面的方法
1 | this.getClass().getResource("").getPath().toString(); |
可以获得file:/C:/xampp/tomcat/webapp/root/WEB-INF/classes/com/db
使用Thread
1 | Thread.currentThread().getContextClassLoader().getResource("").toString(); |
也可以直接获得classes目录,如file:/C:/xampp/tomcat/webapp/root/WEB-INF/classes
我们要如何才能获得WEB-INF目录呢?
因为没有一个专门获取WEB-INF目录的,因此我们就得使用替换replace的方法将上面获得的classes目录中的相关信息替换掉,就可以得出WEB-INF目录了。
代码如下:
1 | public class TestDir { |
2 | public static void main(String[] args) throws IOException{ |
3 | String path1 = Thread.currentThread().getContextClassLoader().getResource("").toString(); |
4 | //上面的path1获得file:/C:/xxxx/xxx/xxx/classes/结构的目录,我们需要将file:/去掉,并且去掉classes/ |
5 | path1=path1.replace("/", "\"); |
6 | // 将/换成\(windows下,linux下请将此处注释) |
7 | path1=path1.replace("file:", ""); |
8 | //去掉file: |
9 | path1=path1.replace("classes\", ""); |
10 | //去掉class\(linux下由于不需要将“/”转换为"\"因此linux下应该修改为“classes/”而不是classes\\) |
11 | path1=path1.substring(1); |
12 | //去掉第一个\,如file:/中的“/”去掉 |
13 | System.out.println("Thread:"+path1); |
14 | } |
15 | } |