新客网
首页 | 新闻 | 系统·网络·服务器·安全 | 工具·办公 | 编程·数据库 | 图象·网页·运营 | 硬件·存储 | 专题教程 | 论坛·old
 → 当前位置:首页 > 教程 > 编程开发 > JAVA > 正文

Java路径问题最终解决方案之一

XKER.COM   2006-12-13 8:48:35  来源:天极  收藏本文

  前言

  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.currentThread().getContextClassLoader().getResource("")

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

本新闻共4页,当前在第1页  1  2  3  4  

上一篇教程:SWT Layout开发时的注意项!
下一篇教程:没有了
收藏本文】 【我要投稿】 【打印本文】 【论坛讨论】 【关闭窗口

相关文章
·利用javascript完全屏蔽右键!·SWT Layout开发时的注意项!
·JSP、PHP与JAVA融合的开发环境(一)·JSP、PHP与JAVA融合的开发环境(二)
·PHP如何调用JAVA 类库·搜索引擎页面分析中的 javascript 处理
·如何用javascript控制上传文件的大小·利用PHP+JavaScript打造AJAX搜索窗
·JavaScript方法和技巧大全·js事件列表
·使用脚本控制网页Table的显示隐藏(全代码)·JS技巧之showModelessDialog()使用详解
·Email地址加密javascript版·javascript 经典函数
·JavaScript常用检测脚本·如何利用IE进行JavaScript脚本调试

学院文章搜索
  
推荐文章
·Java路径问题最终解决方案
·P2P端口映射UPnP功能和使用
·Recover My Files让删除文
·揭开BIOS中的绝对宝藏
·经验共享 如何用3DSMAX来进
·学PS基础:Photoshop技能大
·Linux服务器前台常出现的提
·Gmail邮箱里快速群发邮件的
·ASP.NET 2.0高级数据处理之
·复杂电脑简单用:二十八款系
阅读排行
·免费代理IP(每日更新)
·windows下如何修改右键菜单
·Windows右键菜单设置与应用
·打造功能强大的鼠标右键菜
·Windows Vista中文版5840网
·秘籍:右键菜单终极锤炼术
·如何修改右键菜单?
·端口·木马·安全·扫描应
·Windows远程控制完全指南
·如何安全安装Vista系统
专题教程
·photoshop抠图教程
·PHP教程专题
·MySQL 专题
·数据恢复指南 专题
·Web服务器专题
·DB2 9数据库专题
·ghost教程 专题
·局域网技术专题
·虚拟机专题
·CDN加速技术专题
最新文章
·Java路径问题最终解决方案
·微软称FrontPage年底前被淘
·Linux文件系统被破坏时的处
·打造个性化系统 Vista总管
·黑客高手告诉你哪类站点可
·骇客高手技术的七大秘籍
·手机蓝牙病毒的防范与清除
·CorelDraw路径覆形法绘中心
·CorelDRAWContour(轮廓)
·CorelDRAW工作界面
·CorelDRAW12循序渐进-制作
·CorelDRAW12循序渐进-交互
·用CorelDraw绘可爱黑白猪图
·CorelDraw绘图技巧:编辑技
·CorelDraw基本图形绘制技巧
设为首页 - 加入收藏 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接
Copyright © 2003 - 2006 XKER Inc. All Rights Reserved
新客网 版权所有