java之Properties類

package com.qianfeng.test;

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Iterator;
import java.util.Properties;
import java.util.Set;

/*
 * Properties:這是一個類,可以理解成一個Map集合。
 * 存儲的是屬性,屬性以鍵值對的形式存在。
 * 鍵值對內部的鍵值必須是String,所以不需要泛型。
 * 
 * 爲什麼要在這裏講Properties?
 * 因爲他的操作與流的關係非常密切。
 * 
 * 優點:
 * 1.以鍵值對的形式存值
 * 2.內部封裝了大量的方法,比如:load,stor,list等。方便操作。
 * 
 */
public class Demo10 {

	public static void main(String[] args) throws IOException {
		
		//1.基本的操作。
		//function1();
		//2.如何通過Properties獲取系統的屬性。
		//function2();
		//3.理解Properties的實際應用。
		function3();
		
		
	}
	//1.基本的操作。
	public static void function1(){
		//創建Properties對象
		Properties properties = new Properties();
		
		//存值
		properties.setProperty("01", "java");
		properties.setProperty("02", "python");
		properties.setProperty("01", "ok");
		
		
		//取值
		System.out.println(properties.getProperty("01"));
		
		//獲取所有的Key
		Set<String> set = properties.stringPropertyNames();
		
		//遍歷
		//第一種--增強for循環
		for (String key : set) {
			System.out.println("key:"+key+"  value:"+properties.getProperty(key));
		}
		
		//第二種--迭代器
		Iterator<String> iterator = set.iterator();
		while (iterator.hasNext()) {
			String key = (String) iterator.next();
			System.out.println("key:"+key+"= value:"+properties.getProperty(key));
		}
		
		//注意點:當key不存在的時候,返回的是默認值。
		String string = properties.getProperty("03", "iOS");
		System.out.println(string);
		
	}
	
	//2.如何通過Properties獲取系統的屬性。
	public static void function2(){
		Properties properties = System.getProperties();
		//遍歷屬性集合
		Set<String> set	= properties.stringPropertyNames();
		Iterator<String> iterator = set.iterator();
		while (iterator.hasNext()) {
			String key = (String) iterator.next();
			System.out.println("key:"+key+"= value:"+properties.getProperty(key));
		}
		
		//改變內部的值
		properties.setProperty("user.language", "ch");
		System.out.println(properties.getProperty("user.language"));
		
		//重新獲取一遍
		//會先到內存中找屬性集合的對象,如果有,直接使用;如果沒有,會重新初始化一個新的對象,獲取屬性集合。
		Properties properties1 = System.getProperties();
		System.out.println(properties1.getProperty("user.language"));
		
		//將內容打印到控制檯--list
		properties1.list(System.out);
		
	}
	
	//3.理解Properties的實際應用。
	public static void function3() throws IOException{
		//創建屬性集合對象
		Properties properties = new Properties();
		
		//創建輸入流
		FileReader fileReader = new FileReader("temp2.txt");
		
		//將temp2.txt的內容加載到屬性集合對象中
		properties.load(fileReader);
		
		//打印到控制檯
		//要想打印的是正確的形式,必須保證txt文件是鍵值對的形式存在。
		properties.list(System.out);
		
		//更改內容
		properties.setProperty("01", "bingbingbang");
		
		//將內容重新寫回磁盤--藉助輸出流
		FileWriter fileWriter = new FileWriter("temp2.txt");
		properties.store(fileWriter, "bingbingchoule");
		
		fileReader.close();
		fileWriter.close();
	}
	
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章