由new File(".")引发的思考

文章目录

    • 问题
    • 测试
    • 结论

在阅读java编程思想的时候发现了这样一个问题!

问题

相关代码如下:

package com.Thinking.test;

import java.io.File;

public class DirList {

    public static void main(String[] args) {
        File path = new File(".");
        System.out.println(path.getAbsolutePath());
    }
}

运行结果如下:
由new File(
打印.路径目录为项目根目录。
按理说它应该输出的目录为class(包含包名路径)文件的上层目录。
初步怀疑是ide的编译问题!

测试

例如:
在桌面新建src\com\example层级目录,然后在example目录下新建Main.java类:
代码如下

package com.example;

import java.io.File;

public class Main{

    public static void main(String[] args) {
        File path = new File(".");
        System.out.println(path.getAbsolutePath());
    }
}

在example目录使用javac编译Main.java,生成Main.class:
由new File(
注意,在当前目录不能直接使用java Main运行.Main,因为该类的完整名称应该加上包名,并指定classes目录的位置。应该使用以下命令指定classpath文件位置:
由new File(
在src目录下,指定当前目录为classpath目录,运行Main.class文件:
在这里插入图片描述
在com目录下,指定上层目录为classpath目录,运行Main.class文件:
由new File(
在desktop目录指定src为classpath目录,运行Main.class文件:

结论

由此可以发现path.getAbsolutePath()的路径位置是根据在什么地方运行class类的位置决定的。由此可以看出IDE是在项目的根目录下编译程序的。

你可能感兴趣的:(java)