Class.getResource&Class.getClassLoader.getResource
Java中取资源时,经常用到Class.getResource和ClassLoader.getResource
1.Class.getResource
path 不以’/'开头时,默认是从此类所在的包下取资源;
path 以’/'开头时,则是从ClassPath根下获取;
import java.io.File;
import java.io.IOException;
public class demo01Main {
public static void main(String[] args) throws IOException {
System.out.println(demo01Main.class.getResource(""));
System.out.println(demo01Main.class.getResource("/"));
System.out.println(demo01Main.class.getResource("test.txt"));
System.out.println("======================");
final String rootPath = demo01Main.class.getResource("").getFile();
System.out.println(rootPath);
final File dir = new File(rootPath);
final File[] modelFiles = dir.listFiles();
System.out.println(modelFiles);
System.out.println("********************");
for (final File file: modelFiles) {
System.out.println(file);
final String fileName = file.getName();
System.out.println(fileName);
}
}
}
运行结果:

project结构:

2.Class.getClassLoader().getResource(String path)
path不能以’/'开头时;
path是从ClassPath根下获取;
package demo01;
import java.io.File;
import java.io.IOException;
public class demo01Main {
public static void main(String[] args) throws IOException {
demo01Main d = new demo01Main();
System.out.println(d.getClass());
System.out.println(d.getClass().getClassLoader());
System.out.println(d.getClass().getClassLoader().getResource(""));
System.out.println(d.getClass().getClassLoader().getResource("/"));
}
}
运行结果:


浙公网安备 33010602011771号