第一步:新建java project,本人新建项目结构如下:(此处不是web项目,但web项目与此类似,可以自己研究下)
第二步:新建config.properties,其中存放内容如下:
className=java.util.ArrayList
第三步:集体演示不同路径下config.properties加载方式
package cn.itcast.day;
import java.io.InputStream;
import java.util.List;
import java.util.Properties;
public class ReflectTest {
public static void main(String[] args) throws Exception {
/*****************加载资源文件:java project*******************/
//文件流方式
//方式1:config.properties在src目录下
//InputStream ips=new FileInputStream("src/config.properties");
//方式2:config.properties与src平级放置
//InputStream ips=new FileInputStream("config.properties");
//方式3:config.properties放置在指定包内
//InputStream ips=new FileInputStream("src/cn/itcast/day/config.properties");
//类加载方式
//方式1:绝对路径,config.properties放置在指定包内
//InputStream ips=ReflectTest.class.getClassLoader().getResourceAsStream("cn/itcast/day/config.properties");
//方式2:相对路径,config.properties相对于ReflectTest的路径
InputStream ips=ReflectTest.class.getResourceAsStream("config.properties");
Properties prop=new Properties();
prop.load(ips);
ips.close();
List list=(List) Class.forName(prop.getProperty("className")).newInstance();
System.err.println(list.toString());
}
}
演示结果:[ ]
注:java中读取properties文件的6种方式
1。使用java.util.Properties类的load()方法
示例: InputStream in = lnew BufferedInputStream(new FileInputStream(name));
Properties p = new Properties();
p.load(in);
2。使用java.util.ResourceBundle类的getBundle()方法
示例: ResourceBundle rb = ResourceBundle.getBundle(name, Locale.getDefault());
3。使用java.util.PropertyResourceBundle类的构造函数
示例: InputStream in = new BufferedInputStream(new FileInputStream(name));
ResourceBundle rb = new PropertyResourceBundle(in);
4。使用class变量的getResourceAsStream()方法
示例: InputStream in = JProperties.class.getResourceAsStream(name);
Properties p = new Properties();
p.load(in);
5。使用class.getClassLoader()所得到的java.lang.ClassLoader的getResourceAsStream()方法
示例: InputStream in = JProperties.class.getClassLoader().getResourceAsStream(name);
Properties p = new Properties();
p.load(in);
6。使用java.lang.ClassLoader类的getSystemResourceAsStream()静态方法
示例: InputStream in = ClassLoader.getSystemResourceAsStream(name);
Properties p = new Properties();
p.load(in);
补充
Servlet中可以使用javax.servlet.ServletContext的getResourceAsStream()方法
示例:InputStream in = context.getResourceAsStream(path);
Properties p = new Properties();
p.load(in);