为了便于访问,配置文件一般放置在工作空间里。
有以下几种读取方式:
1.使用java.util.Properties类的load()方法
此时文件的路径可以采用相对路径或者绝对路径,这种方式相当于直接读取文件系统,如果程序执行位置有变动,就需要修改程序。
2.使用java.util.ResourceBundle类的getBundle()方法
3.使用java.util.PropertyResourceBundle类的构造函数
4.使用class变量的getResourceAsStream()方法
用class方式,name路径可以是'/‘开头,此时是相对于classpath的绝对路径,若不以'/‘开头,则是相对于类对象的相对路径。
5.使用class.getClassLoader()所得到的java.lang.ClassLoader的getResourceAsStream()方法
用classloder是相对于class path的绝对路径。
区别class和classLoder:
com.explorers.Test.class.getResourceAsStream("abc.jpg")
= com.explorers.Test.class.getResourceAsStream("/com/explorers/abc.jpg")
= ClassLoader.getResourceAsStream("com/explorers/abc.jpg")
使用Class和ClassLoader方法的话,当源文件或者配置文件的位置改变时,不需要修改源码,只需要改变一下class path即可。
6.使用java.lang.ClassLoader类的getSystemResourceAsStream()静态方法
有以下几种读取方式:
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);
用class方式,name路径可以是'/‘开头,此时是相对于classpath的绝对路径,若不以'/‘开头,则是相对于类对象的相对路径。
5.使用class.getClassLoader()所得到的java.lang.ClassLoader的getResourceAsStream()方法
InputStream in = JProperties.class.getClassLoader().getResourceAsStream(name);
Properties p = new Properties();
p.load(in);
用classloder是相对于class path的绝对路径。
区别class和classLoder:
com.explorers.Test.class.getResourceAsStream("abc.jpg")
= com.explorers.Test.class.getResourceAsStream("/com/explorers/abc.jpg")
= ClassLoader.getResourceAsStream("com/explorers/abc.jpg")
使用Class和ClassLoader方法的话,当源文件或者配置文件的位置改变时,不需要修改源码,只需要改变一下class path即可。
6.使用java.lang.ClassLoader类的getSystemResourceAsStream()静态方法
InputStream in = ClassLoader.getSystemResourceAsStream(name);
Properties p = new Properties();
p.load(in);