Java中getAbsolutePath的打印

Java中getAbsolutePath的打印,java,intellij-idea,Java,Intellij Idea,我的开发环境:Mac+IntelliJ Idea 我正在用Java练习File类 public class FileDemo { public static void main(String[] args) throws IOException { File file = new File("/Users/Samuel/IdeaProjects/JavaFundamentals/src/aa/bb/test.txt"); file.createNewFil

我的开发环境:Mac+IntelliJ Idea

我正在用Java练习File类

public class FileDemo {
    public static void main(String[] args) throws IOException {
        File file = new File("/Users/Samuel/IdeaProjects/JavaFundamentals/src/aa/bb/test.txt");
        file.createNewFile();
        System.out.println(file.getAbsolutePath());
    }

}
结果是
/Users/Samuel/IdeaProjects/javabasicals/src/aa/bb/test.txt

没关系。但是我改变路径后,指纹变得很奇怪

public class FileDemo {
    public static void main(String[] args) throws IOException {
        File file = new File("test.txt"); //notice this line
        file.createNewFile();
        System.out.println(file.getAbsolutePath());
    }

}
打印内容为
/Users/Samuel/IdeaProjects/test.txt


我对路径感到困惑。

因为
“test.txt”
是一个相对路径,文件将相对于程序的工作目录创建(在本例中为
/Users/Samuel/IdeaProjects/
)。

在第一种情况下,您在初始化中提供了
完整路径。因此,它正在打印完整路径。在第二种情况下,您使用的是
相对路径
。基本路径是项目的主目录。

1)当您在创建文件对象时在文件类构造函数中提供完整路径时,它将在所述路径上创建文件


2) 但是如果您没有提供完整路径,那么它将在.class文件所在的路径上创建文件。它是相对路径。

您的项目文件夹是文件类的主文件夹。这就是File类的起点。如果你想要一个较低的文件夹,你需要指定你的路径,或者你可以使用:“新建文件(“..”);
它位于文件夹“IdealProjects”中的主要原因是,因为这是项目的开始路径。

我知道绝对路径和相对路径。对于mac,上面的第二个程序打印的是windows的
/Users/Samuel/IdeaProjects/test.txt
,它将打印
/Users/Samuel/IdeaProjects/JavaFundamentals/src/aa/bb/test.txt
。让我困惑的是差异。这是由系统的差异造成的吗?请查看Java文档以了解更多信息。在UNIX系统上,通过对当前用户目录解析相对路径名,使其成为绝对路径名。在Microsoft Windows系统上,通过将相对路径名与以路径名命名的驱动器的当前目录(如果有)进行解析,相对路径名将变为绝对路径名;如果不是,则根据当前用户目录解析。