package com.demo.test;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Iterator;
import java.util.Properties;
import java.util.Map.Entry;


/**
 * @author God
 * java属性文件的操作
 */
public class Test {
	public static void main(String[] args) throws Exception {
		//读取jvm配置参数
		systenGet();
		//filestream读取属性文件
		filestreamGet();
		//采用jvmclassload加载配置
		classloaderGet();
		//classload 加载中文乱码问题
		classLoadUTFGet();
		//初始化加载到内存中 直接从内存中读取参数
		loadTOMemory() ;
	}
	/**
	 * system读取propertise文件
	 */
	public static void systenGet(){
		Properties properties=System.getProperties();
		System.out.println(properties.getProperty("user.dir"));
	}
	/**
	 * 属相文件信息
	 */
	public static void filestreamGet() {
		Properties p = new Properties();
		try {
			FileInputStream fileInputStream = new FileInputStream("src/jdbc.properties");
			p.load(fileInputStream);
			System.out.println(p.getProperty("username"));
			fileInputStream.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	/**
	 * classloader读取属性文件
	 */
	public static void classloaderGet(){
		ClassLoader load=ClassLoader.getSystemClassLoader();
		Properties p=new Properties();
		try {
			p.load(load.getResourceAsStream("jdbc.properties"));
		} catch (IOException e) {
			e.printStackTrace();
		}
		System.out.println(p.getProperty("username"));
	}
	/**
	 * 读取properties 文件乱码解决方法
	 */
	public static void classLoadUTFGet(){
		ClassLoader load=ClassLoader.getSystemClassLoader();
		Properties p=new Properties();
		try {
			p.load(new InputStreamReader(load.getResourceAsStream("jdbc.properties"), "UTF-8"));
		} catch (IOException e) {
			e.printStackTrace();
		}
		System.out.println("解决中文乱码的方法___:"+p.getProperty("sex"));
	}
	public static void loadTOMemory() throws Exception{
		// 初始化工工程时加载配置文件
		Properties properties = new Properties();
		FileInputStream fileInputStream = null;
		fileInputStream = new FileInputStream("src/jdbc.properties");
		//propereties工具类从流中加载文件
		properties.load(fileInputStream);
		if (null != fileInputStream) {
			//一定要关闭流 不关闭流会照成好多问题
			fileInputStream.close();
		}
		Iterator<Entry<Object, Object>> iterator = properties.entrySet().iterator();
		while (iterator.hasNext()) {
			Entry<Object, Object> e = iterator.next();
			System.setProperty(e.getKey().toString(), e.getValue().toString());
		}
		System.out.println("从内存中读取配置_______:"+System.getProperty("username"));
	}
	
}

//工程结构

JDK工具类_____properties文件各种操作_加载

//属性文件

JDK工具类_____properties文件各种操作_java属性文件操作_02

//运行结果

JDK工具类_____properties文件各种操作_System_03