java获取路径相关总结


一直是个路径白痴,刚好最近有涉及了一些,所幸就总结一下,方便自己下次使用。
本文总结了一些常用到的路径,以及在打包成war时,创建上传资源的文件夹路径遇到的坑。

1. ▪/和▪▪/以及/之间的区别?
"▪/ " :是当bai前目录du
"▪▪/ ":是父级目录
“/” :是根目录

2.常用到的获取路径
//upload是我要建的一个文件夹,使用idea自带的运行项目


//第一种:C:\Users\Administrator\AppData\Local\Temp\tomcat-docbase.2442789799279956589.8088\upload
        String path1 = request.getRealPath("/upload");

//第二种:idea运行  \Users\Administrator\AppData\Local\Temp\tomcat-docbase.2442789799279956589.8088\upload
//tomcat下运行   
        String path2=this.getServletContext().getRealPath("/upload");
        
// 第三种:获取项目路径    F:\AlltheProject\wechatcity\upload
        File directory = new File("");// 参数为空
        String path3 = directory.getCanonicalPath()+"/upload";
        
// 第四种:获取项目路径    F:\AlltheProject\wechatcity\upload
		String path4 = System.getProperty("user.dir")+"/upload";

//第五种:获取类加载根路径(打包前)  /F:/AlltheProject/wechatcity/target/classes/
//打成war包发布后     ....../wechatcity-0.0.1-SNAPSHOT/WEB-INF/classes/
            String path5=this.getClass().getClassLoader().getResource("").getPath();

//第六种:获取到WEB-INF(打包前)    F:/AlltheProject/wechatcity/target/upload
//打成war包发布后    ....../wechatcity-0.0.1-SNAPSHOT/WEB-INF/upload
            String classesPath = this.getClass().getClassLoader().getResource("").getPath().toString();            
            String str1 = classesPath.substring(1, classesPath.indexOf("classes"));//只保留到WEB-INF
            String path6 = str1 + "/upload";
            
//第七种:获取到WEB-INF以前     F:/AlltheProject/wechatcity/target/upload  
//打成war包发布后    ....../wechatcity-0.0.1-SNAPSHOT/upload      
            String classesPath = this.getClass().getClassLoader().getResource("").getPath().toString();  
			String str2 = classesPath.substring(1, classesPath.indexOf("WEB-INF/classes"));//只保留WEB-INF/classes以前的,
            String path7 = str2 + "/upload";
           

3.解释:
第一和第二种:
都是获取项目的根目录,第一种已不推荐使用。这两种用idea运行后获取的是本地缓存路径,tomcat有时候是缓存有时候是项目根目录路径。反正打包后上传文件等别用这个。

第三种:
使用该种方法时,若项目在tomcat(webapp下)环境中运行,将会获取会获取Tomcat安装目录的bin目录,不推荐使用。

第四种:
该种方法创建的文件夹,未打包前创建的upload文件夹在项目第一级下wechatcity\upload;
若打成war包发布到云服务器上后,返回的不再是项目的根目录,而是tomcat的bin目录;也就是说此时的upload文件夹会被解压到服务器bin目录下。
详细解释传送带

第七种:
若想使创建的upload文件夹放在war包中,可以使用它。
ps:如果文件夹在tomcat的bin目录中或者在war包外,不能直接使用在线访问云服务器上的资源。可能需要额外的配置。

4.总结得较详细的文章
JAVA WEB项目中各种路径的获取
Java获取项目路径下的方法(全)
Java项目读取resources资源文件路径那点事
获取项目当前路径,上一级,下一级


参考:
java类中获取WEB-INF路径
Java中获取项目根路径和类加载路径的7种方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值