千家信息网

Java路径的分类与使用注意事项有哪些

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,小编给大家分享一下Java路径的分类与使用注意事项有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!Java路径简单的分可以分为两种:绝对路径和相对路径。下面介绍有关Java路径分
千家信息网最后更新 2026年11月03日Java路径的分类与使用注意事项有哪些

小编给大家分享一下Java路径的分类与使用注意事项有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

Java路径简单的分可以分为两种:绝对路径和相对路径。下面介绍有关Java路径分类的一些细节,以及使用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和当前类的绝对路径的一些方法。

Java路径:你可能需要使用其中的一些方法来得到你需要的资源的绝对路径。

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应用程序中资源的寻址 上文中说过,当前用户目录,即相对于System.getProperty("user.dir")返回的路径。

对于JavaEE服务器,这可能是服务器的某个路径,这个并没有统一的规范。

而不是我们发布的Web应用程序的根目录。

这样,在Web应用程序中,我们绝对不能使用相对于当前用户目录的相对路径。

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

通用的相对路径解决办法 Java中各种相对路径非常多,不容易使用,非常容易出错。因此,我编写了一个便利方法,帮助更容易的解决相对路径问题。

Web应用程序中使用JavaSE运行的资源寻址问题在JavaSE程序中,我们一般使用classpath来作为存放资源的目的地。但是,在Web应用程序中,我们一般使用classpath外面的WEB-INF及其子目录作为资源文件的存放地。在Web应用程序中,我们一般通过ServletContext.getRealPath("/")方法得到Web应用程序的根目录的绝对路径。这样,我们只需要提供相对于Web应用程序根目录的路径,就可以构建出定位资源的绝对路径。

Web应用程序,可以作为Web应用程序进行发布和运行。

但是,我们也常常会以JavaSE的方式来运行Web应用程序的某个类的main方法。

或者,使用JUnit测试。这都需要使用JavaSE的方式来运行。

这样,我们就无法使用ServletContext.getRealPath("/")方法得到Web应用程序的根目录的绝对路径。

而JDK提供的ClassLoader类,它的getResource(String name),getResourceAsStream(String name)等方法,使用相对于当前项目的classpath的相对路径来查找资源。读取属性文件常用到的ResourceBundle类的getBundle(String path)也是如此。它们都只能使用相对路径来读取classpath下的资源,无法定位到classpath外面的资源。 Classpath外配置文件读取问题如,我们使用测试驱动开发的方法,开发Spring、Hibernate、iBatis等使用配置文件的Web应用程序,就会遇到问题。尽管Spring自己提供了FileSystem(也就是相对于user,dir目录)来读取Web配置文件的方法,但是终究不是很方便。而且与Web程序中的代码使用方式不一致。至于Hibernate,iBatis就更麻烦了。只有把配置文件移到classpath下,否则根本不可能使用测试驱动开发。

看完了这篇文章,相信你对"Java路径的分类与使用注意事项有哪些"有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!

路径 程序 应用程序 应用 资源 方法 目录 文件 根目录 问题 形式 服务器 用户 服务 目的 开发 运行 配置 分类 参数 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广州淘业互联网络科技 互联网科技产业 西安纸贵互联网科技有限公司 互联网科技公司华为 科技股互联网 厦门中拓互联网络科技有限公司 互联网为科技 互联网科技媒体 互联网金融科技平台 互联网科技上市公司 左右互联网络科技 滨湖区互联网智能科技产品供应 福州新华互联网科技学校 知乎 宁夏科技产业互联网案例 千方科技属于互联网企业吗 华中科技大学互联网的牛人 上海京穆互联网科技有限公司 山东星卡互联网科技有限公司官网 科技和互联网行业的特点 盐城市攀科互联网科技有限公司 互联网科技工作委员会 互联网科技英文 蓝色互联网科技 博兴的互联网电子科技公司 互联网经济与金融科技 洛阳共同富裕互联网科技有限公司 互联网公司属于科技吗 易租星互联网科技有限公司 米泉互联网科技专业怎么样 杭州科技互联网公司有哪些
0