- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Java工程路径问题
Java路径问题最终解决方案
Java, 路径, 方案
Java路径问题最终解决方案
—可定位所有资源的相对路径寻址
前言
Java的路径问题,非常难搞。最近的工作涉及到创建和读取文件的工作,这里我就给大家彻底得解决Java路径问题。
我编写了一个方法,比ClassLoader.getResource(String 相对路径)方法的能力更强。它可以接受“../”这样的参数,允许我们用相对路径来定位classpath外面的资源。这样,我们就可以使用相对于classpath的路径,定位所有位置的资源!
Java路径
Java中使用的路径,分为两种:绝对路径和相对路径。具体而言,又分为四种:
一、URI形式的绝对资源路径
如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/aaa.b
URL是URI的特例。URL的前缀/协议,必须是Java认识的。URL可以打开资源,而URI则不行。
URL和URI对象可以互相转换,使用各自的toURI(),toURL()方法即可!
二、本地系统的绝对路径
D:/java/eclipse32/workspace/jbpmtest3/bin/aaa.b
Java.io包中的类,需要使用这种形式的参数。
但是,它们一般也提供了URI类型的参数,而URI类型的参数,接受的是URI样式的String。因此,通过URI转换,还是可以把URI样式的绝对路径用在java.io包中的类中。
三、相对于classpath的相对路径
如:相对于
file:/D:/java/eclipse32/workspace/jbpmtest3/bin/这个路径的相对路径。其中,bin是本项目的classpath。所有的Java源文件编译后的.class文件复制到这个目录中。
四、相对于当前用户目录的相对路径
就是相对于System.getProperty(user.dir)返回的路径。
对于一般项目,这是项目的根路径。对于JavaEE服务器,这可能是服务器的某个路径。这个并没有统一的规范!
所以,绝对不要使用“相对于当前用户目录的相对路径”。然而:
默认情况下,java.io 包中的类总是根据当前用户目录来分析相对路径名。此目录由系统属性 user.dir 指定,通常是 Java 虚拟机的调用目录。
这就是说,在使用java.io包中的类时,最好不要使用相对路径。否则,虽然在J2SE应用程序中可能还算正常,但是到了J2EE程序中,一定会出问题!而且这个路径,在不同的服务器中都是不同的!
相对路径最佳实践
推荐使用相对于当前classpath的相对路径
因此,我们在使用相对路径时,应当使用相对于当前classpath的相对路径。
ClassLoader类的getResource(String name),getResourceAsStream(String name)等方法,使用相对于当前项目的classpath的相对路径来查找资源。
读取属性文件常用到的ResourceBundle类的getBundle(String path)也是如此。
通过查看ClassLoader类及其相关类的源代码,我发现,它实际上还是使用了URI形式的绝对路径。通过得到当前classpath的URI形式的绝对路径,构建了相对路径的URI形式的绝对路径。(这个实际上是猜想,因为JDK内部调用了SUN的源代码,而这些代码不属于JDK,不是开源的。)
相对路径本质上还是绝对路径
因此,归根结底,Java本质上只能使用绝对路径来寻找资源。所有的相对路径寻找资源的方法,都不过是一些便利方法。不过是API在底层帮助我们构建了绝对路径,从而找到资源的!
得到classpath和当前类的绝对路径的一些方法
下面是一些得到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.c
您可能关注的文档
- (课例研修范例)小学语文.doc
- 10.0计数原理[理测试].doc
- 1021011235任贝开题汇报.doc
- 02标题-关键词-摘要翻译.doc
- 121312专经济法A卷.doc
- (附件1)结题申请表.doc
- 1级注册建筑考试心得.doc
- 17林黛玉进贾府教案.doc
- 2003导游业务试卷A卷.doc
- 14荷叶圆圆表格式教案.doc
- 北京大学国民经济研究中心-政策调整,经济阶段性回调.pdf
- 华鑫证券-电子行业周报:高端AI芯片国产化势在必行,覆铜板厂商涨价反映PCB产业链景气度高企.pdf
- 兴业证券-生猪养殖行业“反内卷“专题-以史为鉴,产能调控下行业将如何变化.pdf
- 东吴证券-远航精密-833914-精密镍基材料国内龙一,固态有望贡献较大弹性.pdf
- 开源证券-恒立钻具-836942-北交所首次覆盖报告:技术领先盾构刀具龙头,卡位雅江水电掘进,并购协同释放新空间.pdf
- 华福证券-流动性视角看“慢牛”.pdf
- 东方证券-AI液冷系列报告之二:AI液冷:1-N及从国内到出海,共同促进产业链量利齐升.pdf
- 广发证券-银行业跨境流动性跟踪-7月企业结汇意愿继续增强,金融净结汇回落.pdf
- 西部证券-基金研究-行业主题基金专题研究-四-:科技主题基金研究框架及产品优选.pdf
- 方正证券-机械设备行业专题报告-光热发电专题,新型电力系统重要构成,未来光电建设中坚力量.pdf
最近下载
- 高考阅读精选100篇.pdf VIP
- 2025小学《义务教育英语课程标准》(2022 年版)测试题库及答案【共3 套】.docx VIP
- csds_CSDS75-35-4 1,1-二氯乙烯 化学品安全技术说明书MSDS 物质安全资料表SDS.pdf VIP
- 2025内蒙古巴彦淖尔市能源(集团)有限公司第二批招聘55人笔试备考题库及答案解析.docx VIP
- 工会大厦监控升级改造项目竣工报告.docx VIP
- 保密管理措施.docx VIP
- NB-T 35002-2011 水力发电厂工业电视系统设计规范.pdf VIP
- 2025年枣庄市中考历史试题卷(含答案及解析).docx
- 《班级管理》全套完整版教学课件(共337页PPT).pptx
- 风机知识培训课件.pptx VIP
文档评论(0)