1. 程式人生 > >技術總結:讀取Properties配置檔案

技術總結:讀取Properties配置檔案

最近整理以前程式碼,將讀取Properties配置檔案的程式碼編寫成一個工具。使用Map進行儲存。利用java的多型性實現不同形式的讀取。話不多說,貼程式碼

/*
 * @auther yc
 * 2018/10/13
 */
package yc_util.core;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;

public class PropertiesReader {
	private static final Map<String, String> propertyMap = new HashMap<>();
	
	public static void init(String path) {
		InputStream is = PropertiesReader.class.getResourceAsStream(path);
		init(is);
	}
	
	public static void init(File file) {
		try {
			InputStream is = new FileInputStream(file);
			init(is);
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
	}
	
	public static void init(InputStream is) {
		
		try {
			InputStreamReader isr = new InputStreamReader(is);
			Properties properties = new Properties();
			properties.load(isr);
			
			Enumeration<?> keys = properties.propertyNames();
			while (keys.hasMoreElements()) {
				String key = (String) keys.nextElement();
				String value = properties.getProperty(key);
				
				propertyMap.put(key, value);
			}
		} catch (IOException e) {
			System.out.println("指定檔案未找到!");
		} finally {
			try {
				is.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
	
	public static String getValue(String key) {
		return propertyMap.get(key);
	}
	
	public static List<String> getKeyList() {
		List<String> keyList = new ArrayList<>();
		keyList.addAll(propertyMap.keySet());
		
		return keyList;
	}
}