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包下 } }