java 开发中相对路径的参照物是什么,参照路径的配置,以及相对路径前加不加(/)反斜杠区别

java 开发中,new File() 中的参数有两种情况,一是绝对路径,而是相对路径。

绝对路径不用多说,程序很容易就可以精确定位文件的所在位置。
相对路径就要通过额外的信息来确定文件的位置了,首先要理解相对路径的相对参照物是什么,就是下面所说的当前用户目录。

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

java虚拟机的调用目录”.更明白的说这个路径其实是我们在哪里调用jvm的路径
举个例子:
假设有一java源文件Example.java在d盘根目录下,该文件不含package信息.我们进入命令行窗口,然后使用”d:”命令切换到d盘根目录下,然后
用”javac Example.java”来编译此文件,编译无错后,会在d盘根目录下自动生成”Example.class”文件.我们在调用”java Example”来运行
该程序.此时我们已经启动了一个jvm,这个jvm是在d盘根目录下被启动的,所以此jvm所加载的程序中File类的相对路径也就是相对这个路径的,即
d盘根目录:D:\.同时” 当前用户目录”也是D:\.在System.getProperty(“user.dir”);系统变量”user.dir”存放的也是这个值.


在eclipse 中

这个虚拟机的调用目录 可以在 run configuration 的 working directory 中重新配置的java 开发中相对路径的参照物是什么,参照路径的配置,以及相对路径前加不加(/)反斜杠区别

修改了这个 directory 后,当前用户目录就是改之后的路径。


相对路径前加不加(/)反斜杠区别:

   1.(无)开头表示当前目录下的
    2.(/)开头的目录表示该目录为根目录的一个子目录
    3.(./)开头的目录表示该目录为当前目录(当前目录所在的目录)的一个子目录
    4.(../)开头的目录表示该目录为当前目录的父目录

    public static void main(String[] args) throws IOException {
File f = new File("trims-data.txt");
f.createNewFile();
   String absolutePath = f.getAbsolutePath();
   System.out.println(absolutePath);
   }

trims-data.txt 文件在 D:\tools\FAQ 下


public static void main(String[] args) throws IOException {
  File f = new File("/trims-data.txt");
  f.createNewFile();
    String absolutePath = f.getAbsolutePath();
    System.out.println(absolutePath);
    }

trims-data.txt 文件在 D:\下

public static void main(String[] args) throws IOException {
  File f = new File("./trims-data.txt");
  f.createNewFile();
    String absolutePath = f.getAbsolutePath();
    System.out.println(absolutePath);
    }

trims-data.txt 文件在 D:\tools\FAQ 下

public static void main(String[] args) throws IOException {
  File f = new File("./trims-data.txt");
  f.createNewFile();
    String absolutePath = f.getAbsolutePath();
    System.out.println(absolutePath);
    }

trims-data.txt 文件在 D:\tools 下