Discuss / Java / 为什么我这里3,4条测试代码传入文件名报null,不传则显示目录

为什么我这里3,4条测试代码传入文件名报null,不传则显示目录

Topic source

PeachLuis

#1 Created at ... [Delete] [Delete and Lock User]

代码:

System.out.println(JZ3.class.getResource(""));
System.out.println(JZ3.class.getResource("/"));
System.out.println(JZ3.class.getResource("/default.properties"));
System.out.println(JZ3.class.getResource("default.properties"));

输出:

file:/D:/CodeLab/Java/Alg/leetCode/out/production/leetCode/niuke/
file:/D:/CodeLab/Java/Alg/leetCode/out/production/leetCode/
null
null

目录结构:

目录图片

PeachLuis

#2 Created at ... [Delete] [Delete and Lock User]

懂了,原来default.properties里面是空的话,那就返回null,真厉害啊

PeachLuis

#3 Created at ... [Delete] [Delete and Lock User]

但是为什么第三条仍旧是null?那怎么得到根目录下的文件?

PeachLuis

#4 Created at ... [Delete] [Delete and Lock User]

我又懂了,原来根路径下的文件,不能用"/new.txt",必须用"./new.txt"

PeachLuis

#5 Created at ... [Delete] [Delete and Lock User]

上一条我错了,错看了目录结构,使用getResource,传入"/"前缀,这里根路径是指src下,而不是src以外;

看错了一条,卡了我一天,吸取教训

不对的结论请删除,不然会误导其他初学者

🕶

#7 Created at ... [Delete] [Delete and Lock User]

获取的目录不是你src(源文件)下的目录,而是你编译后(class的文件)的目录,在idea里是一个叫out的目录(class的文件),而你的properties文件只在src目录下有,所以报null。传参中"文件名.properties"表示与Class同级目录下,"/文件名.properties"表示项目的根目录下


  • 1

Reply