Properties类学习
1、定义
- Properties,java.utils包下的一个工具类,主要用于读取Java的配置文件。各种语言都有自己所支持的配置文件,配置文件中很多变量是经常变动的。
- 这样做也是为了方便用户,让用户能够脱离程序本身去修改相关的变量设置。
2、主要方法
它提供了几个主要的方法:
- getProperty(String key):用指定的键在属性列表中搜素属性。通过参数key,得到key所对应的value。
- load(InputStream input):从输入流中读取属性列表(键值对)。通过对指定的文件进行装载来获取该文件的所有键值对,以供getProperty(String key)方法来搜素。
- setProperty(String key, String value):调用Hashtable的put方法,通过调用基类的put方法来设置键值对。
- store(OutputStream out, String comments):以适合使用load方法加载到Properties表中的格式,将此Propertie表中的属性列表(键值对)写入输出流。与load方法相反,该方法将键值对写入到指定的文件中去。
- clear():清除所有装载的键值对。该方法在基类中提供。
3、注意
- ResourceBundle 只读
- Properties:可写可读
代码示例
import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.util.Properties;public class PropertiesDemo { private static String version; private static String username; private static String password; // 静态代码块,只会执行一次,类加载的时候就会执行 static { // readConfig(); } // 写入配置文件 public static void writeConfig(String version, String username, String password) { Properties p = new Properties(); p.put("app.version", version); p.put("db.username", username); p.put("db.password", password); try { OutputStream outStream = new FileOutputStream("src/testio/conf.properties"); // 写文件 p.store(outStream, "update config"); outStream.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }// writeConfig // 读取配置文件 public static void readConfig() { Properties p = new Properties(); try { // 由于这种方法需要写全路径(src)而发布时是没有src目录的,不推荐使用 // InputStream inStream = new FileInputStream("src/testio/conf.properties"); // 通过当前线程的类加载器对象,来加载指定包下的配置文件。 InputStream inStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("res/conf.properties"); p.load(inStream);// 加载文件 // 从文件中获取数据 version = p.getProperty("app.version"); username = p.getProperty("db.username"); password = p.getProperty("db.password"); inStream.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }// readConf public static void main(String[] args) { //writeConfig("88", "fei", "36521"); readConfig(); System.out.println("version = " + version + ";username = " + username + ";password = " + password); }}
用的配置文件名为conf.properties
文件内容如下:db.password=36521
app.version=88 db.username=fei