美文网首页Java 杂谈
深入解析Java绝对路径与相对路径

深入解析Java绝对路径与相对路径

作者: java高级编程中心 | 来源:发表于2019-02-22 21:38 被阅读0次

    绝对路径:也可称完整路径,是指向文件系统中某个固定位置的路径,不会因当前的工作目录而产生变化。为做到这点,它必须包括根目录。

    小编整理了一些java进阶学习资料和面试题,需要资料的请加JAVA高阶学习Q群:664389243 这是小编创建的java高阶学习交流群,加群一起交流学习深造。群里也有小编整理的2019年最新最全的java高阶学习资料!

    举例:

    test.txt文件的绝对路径为:D:documentsdevelopest.txt

    https://www.oracle.com/index.html代表了一个URL绝对路径

    复制代码

    相对路径:则是以指定的工作目录作为基点,避开提供完整的绝对路径。文件名称就可以被视为指定工作目录为基点的一个相对路径(虽然一般不将其称之为路径)。

    Java中加载文件时使用的相对路径,究竟是相对于什么路径呢?

    据java doc上说明,Java使用的相对路径,就是相对于“当前用户目录”,即“Java虚拟机的调用目录”,更白话就是:我们在哪里调用了JVM的路径。

    举例:

    D盘根目录下有一java源文件Test.java,如:D:Test.java

    该Test.java文件不含package信息,在命令行窗口编译此文件(执行命令:javac Test.java),则会在D盘自动生成Test.class文件。

    然后在命令行窗口执行该程序(执行命令:java Test),此时已启动一个JVM,这个JVM是在D盘根目录下被启动的,则JVM所加载程序中File类的相对路径就是相对D盘根目录的,即 D:

    “当前用户目录”,即Java虚拟机的调用目录,也是:D:

    System.getProperty("user.dir")中系统变量"user.dir"存放的也是 D:

    说明:把Test.class移动到不同路径下,执行java Test命令启动JVM,发现“当前用户目录”是不断变化的,始终和在哪启动JVM的路径是一致的。

    复制代码

    2. 路径的分类

    3. 路径的区别和操作API

    3.1 Java Class的相对路径

    相对于classpath的相对路径

    classpath: 就是项目中存放.class文件的路径。

    举例:

    Eclipse项目中classpath为:D:eclipse32workspacejava-demoin,相对于classpath的相对路径,就是相对于D:eclipse32workspacejava-demoin的相对路径。

    (URL形式表示为:file:/D:/eclipse32/workspace/java-demo/bin/)

    IntelliJ IDEA项目中classpath为:D:ideaProjectDemojava-demoargetclasses,相对于classpath的相对路径,就是相对D:ideaProjectDemojava-demoargetclasses的相对路径。

    (URL形式表示为:file:/D:/ideaProjectDemo/java-demo/target/classes/)

    复制代码

    相对于当前用户目录的相对路径

    当前用户目录:即Java虚拟机的调用目录,即 System.getProperty("user.dir") 返回的路径。

    对于一般项目,就是项目的根目录,例如:java-demo项目的项目根目录为:D:ideaProjectDemojava-demo。

    对于JavaEE服务器,可能是服务器的某个路径,这个没有统一的规范,例如:在Tomcat中运行Web应用,那“当前用户目录”是:%Tomcat_Home%/bin(即 System.gerProperty("user.dir") 输出%Tomcat_Home%/bin),即D:Program Files omcat-5.0.28in,由此可以看出Tomcat服务器是在bin目录下启动JVM的(其实是在bin目录下的“catalina.bat”文件中启动JVM的)。

    说明:

    默认情况下,java.io包中的类总是根据“当前用户目录”来分析相对路径名,此目录由系统属性user.dir指定,通常是Java虚拟机的调用目录。

    也就是说:在使用java.io包中的类时,最好不要使用相对路径。(在J2EE程序中会出问题,这个路径在不同的服务器中都是不同的)。

    所以,不要使用相对于“当前用户目录”的相对路径。

    小编整理了一些java进阶学习资料和面试题,需要资料的请加JAVA高阶学习Q群:664389243 这是小编创建的java高阶学习交流群,加群一起交流学习深造。群里也有小编整理的2019年最新最全的java高阶学习资料!

    相关文章

      网友评论

        本文标题:深入解析Java绝对路径与相对路径

        本文链接:https://www.haomeiwen.com/subject/ezuyyqtx.html