Properties工具类学习

Properties类学习

1、定义

  • Properties,java.utils包下的一个工具类,主要用于读取Java的配置文件。各种语言都有自己所支持的配置文件,配置文件中很多变量是经常变动的。
  • 这样做也是为了方便用户,让用户能够脱离程序本身去修改相关的变量设置。

2、主要方法

它提供了几个主要的方法:

  1. getProperty(String key):用指定的键在属性列表中搜素属性。通过参数key,得到key所对应的value。
  2. load(InputStream input):从输入流中读取属性列表(键值对)。通过对指定的文件进行装载来获取该文件的所有键值对,以供getProperty(String key)方法来搜素。
  3. setProperty(String key, String value):调用Hashtable的put方法,通过调用基类的put方法来设置键值对。
  4. store(OutputStream out, String comments):以适合使用load方法加载到Properties表中的格式,将此Propertie表中的属性列表(键值对)写入输出流。与load方法相反,该方法将键值对写入到指定的文件中去。
  5. 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

posted on 2019-05-19 22:42  行之间  阅读(144)  评论(0编辑  收藏  举报