JAVA 路径详解

来源:互联网 发布:精易编程助手 编辑:程序博客网 时间:2024/05/16 07:34

前言

绝对路径和相对路径

绝对路径:绝对路径就是文件在系统中的真实路径,如c:\test\test1.txt相对路径:相对路径表示相对于一个路径后的路径,比如上面的test1.txt相对于c:\text这个路径就是test.txt,相对于c:\这个路径就是text\text1.txt,参照路径不同,相对路径就不同。在java一般项目中,相对路径一般取的是workspace下具体项目路径,比如workspace下面有个test项目,这个项目下的相对路径就是相对于workspace\test的路径。

正斜杠(/)和反斜杠()的差别

在window系统中路径分割符以\区分,而在linux系统中路径分割符以/区分。在java系统中\和紧跟着它的那个字符构成转义字符,所以在window环境下c:\test\test1.txt的路径要用c:\\test\\test1.txt表示(或者直接用c:/test/test1.txt)。

Java File路径

绝对路径

绝对路径直接写文件在硬盘上的路径

public class Test {    public static void main(String[] args){        //这个简单不多讲        System.out.println(new File("C:/test/test1.txt").getAbsolutePath());    }}

相对路径

普通File路径

环境
工作目录:c:\workspace
项目路径:c:\workspace\PathTest

  1. 带正斜杠/开头的路径,是相对于项目源文件的根路径(c:),比如:
    new File("/test.txt")//这个文件路径就是c:/test.txt

  2. 不带/开头的路径,是相对于Java项目目录的路径(“c:\workspace\PathTest\”),比如
    new File("test.txt")//这个文件路径就是c:\workspace\PathTest\test.txt

  3. “./”开头代表的Java项目目录(“c:\workspace\PathTest\”)
    new File("./test.txt")//相当于new File("test.txt")
  4. “../”开头代表的是Java项目的父目录(“c:\workspace\”)
    new File("../test.txt")//这个文件路径就是c:\workspace\test.txt

ClassPath路径###

一般项目打包后,类文件会生成在指定的目录里面,我们可以通过右键项目属性进程查看
这里写图片描述
这里src下的源文件打包后生成的class文件都会在WEB项目的Build/classes下面,普通的项目会在bin文件下面,maven项目也会有默认的输出目录,打开可以自行查看。
这样假设我们使用普通的路径方法访问src里面的一个文件,要使用new File(”src/文件路径”)。倒是导出文件后src这个目录没有了,这样我们的代码就会报错,所以一般情况下建议使用相对于classpath的路径。

//通过Class和通过ClassLoader两种方式获取的classpath的url(file:/C:/Users/Administrator/workspace/PathTest/build/classes/)PathTest.class.getClassLoader().getResource("")//获取的classpath的test.txt(file:/C:/Users/Administrator/workspace/PathTest/build/classes/test.txt)如果没有的话则返回nullPathTest.class.getClassLoader().getResource("test.txt")//PathTest.class.getResource("")获取的是获取的值跟PathTest.class.getClassLoader().getResource("")一样//PathTest.class.getResource("/")获取的就是相对于PathTest这个类路径了值为classpath+包路径PathTest.class.getClassLoader().getResource("")

其实看源码知道 类名.class.getResource(“”)这种方式底层还是调用的Classloader的方法,通过类调用的时候参数如果以“/”开头会自动将/转换为ClassPath的路径+类的包路径+/后面的路径,然后通过classloader调用。

原创粉丝点击