先来看看建立的测试工程目录
属性文件我们放在包test下,当然了,一般在实际开发过程中不建议这样做,建立把属性文件放在src目录下,现在放在包下主要是便于了解路径的问题。
下面来看一段读取属性文件的代码,属性文件配置了一个类Hello的K-V键值,我们要从中读取并加载到内存中来。
Java 8 中 HashMap 的性能提升
ReadProperties.properties
v=com.luhy.test.Hello
Hello类:
package com.luhy.test;
public class Hello {
public void run(){
System.out.println("Hello");
}
}
ReadProperties.java
package com.luhy.test;
import java.util.Properties;
public class ReadProperties {
public static void main(String[] args) throws Exception{
String filename = "com/luhy/test/ReadProperties.properties";
Properties props = new Properties();
props.load(ReadProperties.class.getClassLoader().getResourceAsStream(filename));
String h = props.getProperty("v");
Object o = Class.forName(h).newInstance();
Hello hello = (Hello)o;
hello.run();
}
}
执行完打印输出:
Hello
下面再来看一下编译后的bin目录
可见编译后属性文件被自动放到相应的包内,当然了,这里的bin相当于源码中的src,实际开发中一般放在此src目录下,这样在发布项目时就不用折腾了。
说明:
1、props.load(ReadProperties.class.getClassLoader().getResourceAsStream(filename));意思是获得从Properties类获得类加载器(类加载器主要有四种,分别加载不同类型的类,加载只是把class文件放进内存,并没有产生对象),并把指定文件转化为流。这一步,有很多新手,直接往load()里填文件名或具体文件路径名,程序运行时会报错找不到指定路径。所以,一定要注意这点。