项目的路径
我们所想要读取的是在src下的bean.properties文件,确切的说是加载类路径下的bean.properties.为了方便对比,我们在项目的更路径下创建了bean1.properties文件,用来加以对比类路径和项目根路径。
第一种方式(不推荐)
采用InputStream直接加载,用IO流直接加载,写相对路径的话,是基于项目名开始的,所以bean.properties的路径需要从src写起。
如果不写src的这一级路径,就会加载bean1.properties文件。
public static void main(String[] args) throws IOException {
InputStream in = new FileInputStream("src/bean.properties");
Properties ps = new Properties();
ps.load(in);
String student = ps.getProperty("Student");
System.out.println(student);
}
该种方式,在我们的IDE中会正常编译运行,但是当我们的项目部署到web服务器中时会丢失路径,因为项目部署到tomcat的webapps下后是没有src路径的。
第二种方式(推荐)
采用类加载器来加载配置文件,类加载器会从类的根路径加载文件。
public static void main(String[] args) throws IOException {
InputStream in = BeanFactory.class.getClassLoader().getResourceAsStream("bean.properties");
Properties ps = new Properties();
ps.load(in);
String student = ps.getProperty("Student");
System.out.println(student);
}
第三种方式(推荐)
采用ResourceBundle抽象类,如果是加载扩展名为.properties文件,使用该方法,非常的方便。一行代码就可以搞定。该方法也是从类路径下开始加载,但是只能加载.properties为扩展名的文件,并且不需要指定文件的扩展名。
public static void main(String[] args) {
ResourceBundle bean = ResourceBundle.getBundle("bean");
String student = bean.getString("Student");
System.out.println(student);
}