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("/"));
    }
}

  运行结果:

 

参考:关于Class.getResource和ClassLoader.getResource的路径问题

posted @ 2020-10-21 13:48  GumpYan  阅读(110)  评论(0编辑  收藏  举报