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("/")); } }
运行结果: