开发者社区> usher.yue> 正文

Java开发中各种获得路径的方法

简介: 归纳一些网上取JAVA路径的方法: 注明:如果从ANT启动程序,this.getClass().getResource("")取出来的比较怪,直接用JAVA命令行调试就可成功。 得到classpath和当前类的绝对路径的一些方法 获得CLASSPATH之外路径的方法:   URL base = this.
+关注继续查看
归纳一些网上取JAVA路径的方法:

注明:如果从ANT启动程序,this.getClass().getResource("")取出来的比较怪,直接用JAVA命令行调试就可成功。

得到classpath和当前类的绝对路径的一些方法

获得CLASSPATH之外路径的方法:

  URL base = this.getClass().getResource(""); //先获得本类的所在位置,如/home/popeye/testjava/build/classes/net/ String path = new File(base.getFile(), "……/……/……/"+name).getCanonicalPath(); //就可以得到/home/popeye/testjava/name

下面是一些得到classpath和当前类的绝对路径的一些方法。你可能需要使用其中的一些方法来得到你需要的资源的绝对路径。

1.FileTest.class.getResource("")

得到的是当前类FileTest.class文件的URI目录。不包括自己!

如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/com/test/

2.FileTest.class.getResource("/")

得到的是当前的classpath的绝对URI路径。

如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/

3.Thread.currentThread().getContextClassLoader().getResource("")

得到的也是当前ClassPath的绝对URI路径。

如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/

4.FileTest.class.getClassLoader().getResource("")

得到的也是当前ClassPath的绝对URI路径。

如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/

5.ClassLoader.getSystemResource("")

得到的也是当前ClassPath的绝对URI路径。

如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/

我推荐使用Thread.currentThread().getContextClassLoader().getResource("")来得到当前的classpath的绝对路径的URI表示法。

在Web应用程序中,我们一般通过ServletContext.getRealPath("/")方法得到Web应用程序的根目录的绝对路径。这样,我们只需要提供相对于Web应用程序根目录的路径,就可以构建出定位资源的绝对路径。

注意点:

1.尽量不要使用相对于System.getProperty("user.dir")当前用户目录的相对路径。这是一颗定时炸弹,随时可能要你的命。

2.尽量使用URI形式的绝对路径资源。它可以很容易的转变为URI,URL,File对象。

3.尽量使用相对classpath的相对路径。不要使用绝对路径。使用上面ClassLoaderUtil类的public static URL getExtendResource(String relativePath)方法已经能够使用相对于classpath的相对路径定位所有位置的资源。

4.绝对不要使用硬编码的绝对路径。因为,我们完全可以使用ClassLoader类的getResource("")方法得到当前classpath的绝对路径。

使用硬编码的绝对路径是完全没有必要的!它一定会让你死的很难看!程序将无法移植!

如果你一定要指定一个绝对路径,那么使用配置文件,也比硬编码要好得多!

当然,我还是推荐你使用程序得到classpath的绝对路径来拼资源的绝对路径。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
​Java高精度人员定位系统源码,基于Vue+Spring boot开发,运用UWB定位技术
一套运用UWB技术的高精度人员定位系统源码,专业团队研发,可运用于化工厂人员定位,养老院定位,施工人员定位,隧道人员定位,室内管廊定位,车辆定位,物资定位,仓储定位等。
13 0
Java智慧校园电子班牌系统源码 基于Java+springboot+vue+element-ui+mysql开发
Java智慧校园系统源码 智慧学校源码 小程序+电子班牌,有演示,可正常上线运营+可授权 开发环境:Java+springboot+vue+element-ui+mysql 开发语言:Java+springboot+VUE +小程序 全套源码
77 0
Zp
Java开发常用工具网址
Java开发常用工具网址
17 0
IOT智慧物联网平台源码 后台基于JAVA开发 前端HTML
目前web系统功能已实现: 1、 数据实时采集和远程控制; 2、 报警信息管理和报表导出; 3、 自动控制,触发管理; 4、 历史数据,报表导出功能; 5、 子账户和场景授权管理; 6、 场景信息管理;
65 0
Java web 开发涉及多线程和锁定的应用场景有哪些?(邮件发送和接收示例)
Java web 开发中,有一些场景需要用到多线程和锁定,以提高性能、保证数据一致性或实现特定的功能,多线程和锁定提升网站性能、保障数据安全或实现复杂功能的重要技术手段。
34 0
智慧校园源码,智慧学校源码+微信小程序+人脸电子班牌 JAVA开发
技术开发环境:Java+springboot+vue+element-ui+mysql 用的是最新的技术栈,完全满足开发要求。 它是一款集智慧教学、智慧教务、智慧校务于一体的校园管理平台
83 0
电子病历系统源码 EMR电子病历源码 医院电子病历系统 B/S架构 JAVA开发
后端技术选型:SpringBoot框架、Mybatis-Plus、WebSocket、Stomp、Vintage-Engine 前端技术选型:原生HTML、JS、CSS,Jquery、BootStrap、layui、Swf插件、Clipboard剪切板、Echarts、PagedJS打印插件、Prince打印插件、Wkhtmltopdf打印插件等。
54 0
云HIS源码:JAVA开发采用主流技术栈
云HIS系统技术框架: 总体框架: SaaS应用,全浏览器访问 前后端分离,多服务协同 服务可拆分,功能易扩展 云HIS系统技术细节: 前端:Angular+Nginx 后台:Java+Spring,SpringBoot,SpringMVC,SpringSecurity,MyBatisPlus,等 数据库:MySQL + MyCat 缓存:Redis+J2Cache 消息队列:RabbitMQ 任务调度中心:XxlJob 接口技术:RESTful API + WebSocket + WebService 报表组件:itext + POI + ureport2 数据库
42 0
Java学习之路006——Servlet开发
包括引入servlet的api库、IDEA2022配置servlet有关操作,以及servlet的xml配置与注解使用;以及简单的servlet编程实现。
36 0
走过的坑-Java开发
走过的坑-Java开发
26 0
+关注
usher.yue
算法相关技术专家
文章
问答
文章排行榜
最热
最新
相关电子书
更多
Java工程师必读手册
立即下载
Java应用提速(速度与激情)
立即下载
Java单元测试实战
立即下载