resources中存放一些个资源文件,比如properties文件等,编译好会自动将这里边的文件复制到target/classes里去。获取资源文件的方法说明:
XXX.class.getResourceAsStream ()返回的是inputstream
XXX.class.getResource("/")返回URL,是classpath的位置
XXX.class.getClassLoader().getResource("") 返回的是classpath的位置
读取resources里的文件
Properties prop = new Properties();
try {
prop.load(this.getClass().getResourceAsStream("/kafka-http.properties"));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
关键在于后面的路径的写法:
"kafka-http.properties" 是去当前这个class文件同一个目录下找(也即是当前这个java文件同一个目录下必须有这个properties文件,才能复制到对应的class目录)
"/kafka-http.properties" 是去整个项目的classes目录下去找,也即是上面提到过的target/classes
XXX.class.getResourceAsStream ()返回的是inputstream
XXX.class.getResource("/")返回URL,是classpath的位置
XXX.class.getClassLoader().getResource("") 返回的是classpath的位置
读取resources里的文件
Properties prop = new Properties();
try {
prop.load(this.getClass().getResourceAsStream("/kafka-http.properties"));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
关键在于后面的路径的写法:
"kafka-http.properties" 是去当前这个class文件同一个目录下找(也即是当前这个java文件同一个目录下必须有这个properties文件,才能复制到对应的class目录)
"/kafka-http.properties" 是去整个项目的classes目录下去找,也即是上面提到过的target/classes
所以如果将属性文件放到src/main/resources里,那么要用Class.getResourceAsStream("/kafka-http.properties")来读取。
参考:
http://www.jb51.net/article/106380.htm
http://blog.csdn.net/wenhuiqiao/article/details/8485879
http://www.cnblogs.com/lyhero11/p/5186022.html