Properties类的原理

Properties实际上就是一个类似HashMap容器的东西。

我自己编写的一个Properties,叫MyProperties,如下:

​
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;

public class MyProperties {
	// 属性容器
	private Map props =new HashMap();

	// 获取属性
	public Object getProp(String propKey) {
		return props.get(propKey);
	}

	// 设置属性
	public void setProp(String propKey, String propValue) {
		props.put(propKey, propValue);
	}

	// 从文件中获取所有属性并添加到props上去
	public void loadProps(String fileName) {
		// 判断结尾是否存在".properties:"这段字符串
		if (fileName.endsWith(".properties")) {
			try {
				// 使用Thread.currentThread().getContextClassLoader().getResourceAsStream("")来得到当前的classpath的绝对路径
				// 它只能获取src文件夹下的一级文件
				InputStreamReader in = new InputStreamReader(Thread.currentThread().getContextClassLoader().getResourceAsStream(fileName));
				BufferedReader br = new BufferedReader(in);
				String line;
				while (null != (line = br.readLine())) {
					// 判断在这一行上的等号是否存在
					if (line.indexOf("=") > 0) {
						// 如果存在,则需获得等号的索引,等号之前为key,等号之后为value
						int index = line.indexOf("=");
						// 根据索引,截取字符串,并保存到pros中
						setProp(line.substring(0, index),line.substring(index + 1));
					}
				}
				br.close();
			} catch (Exception e) {
				e.printStackTrace();
				System.out.println("该文件不存在或者IO异常");
			}
		} else {
			System.out.println("该文件不是properties文件");
		}
	}
	
	 public static void main(String args[]){
		 //new一个Properties类的对象
		 MyProperties properties = new MyProperties();
		 properties.loadProps("db.properties");
   	         System.out.println(properties.getProp("db.driver"));
     }

}

​

 

你可能感兴趣的:(java)