getResourceAsStream小结

springboot工程中代码放在java下面,配置文件放在resource下面

我把代码放在java下面com.aa包下,配置文件放在resource下面com.aa包下,其实resource对应的就是类路径。

读取配置三种方式

package com.aa;

import java.io.InputStream;

public class Test {

    public static void main(String[] args) throws Exception {
        InputStream is1 = Test.class.getResourceAsStream("peizhi.properties");//1.相对路径读文件,由于配置文件和代码文件的路径一致,所以相对路径可以直接读到文件流。
        InputStream is2 = Test.class.getResourceAsStream("/com/aaa/peizhi.properties");//2.绝对路径读文件,以"/"开头,从类路径开始。
        InputStream is3 = Test.class.getClassLoader().getResourceAsStream("com/aaa/peizhi.properties");//3.classLoader读文件,从类路径开始。
    }
}

后面2种方式很好理解,classloader和绝对类路径都是从类路径开始查找,区别就是绝对路径开头有"/"。

相对路径的方式可以再举个例子帮助理解,现在把配置文件放到com.aa以外的地方,看下如何拿到

package com.aa;

import java.io.InputStream;

public class Test {

    public static void main(String[] args) throws Exception {
        InputStream is1 = Test.class.getResourceAsStream("bb/peizhi.properties");//peizhi.properties放到com.aa.bb包下
        InputStream is2 = Test.class.getResourceAsStream("../peizhi.properties");//peizhi.properties放到com包下
    }
}
原文地址:https://www.cnblogs.com/liuboyuan/p/9595412.html