1. 程式人生 > >Java讀寫Properties配置檔案小案例

Java讀寫Properties配置檔案小案例

在軟體專案開發中需要讀取配置檔案,下面就簡單的演示一下如何從配置檔案中讀取資料以及修改其中的資料

 

一,建立一個新的Java專案,並命名為 propertiesdemo

                                 

 

二,建立配置檔案,專案右擊建立Text File格式的檔案,如果找不到,可點選最下面的others按照關鍵字搜尋

                              

在檔案裡面輸入 temp=10 

 

關閉該檔案,系統提示你儲存目錄以及名稱  將目錄設定為propertiesdemo下的src資料夾下  名字命名為 properties 。如下圖

 

                            

 

三,讀寫程式碼 新建 PropertiesUtil類 

package util;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
/**
 * 配置檔案讀取幫助工具
 * 單例設計模式 只允許建立該類一個物件
 */
import java.io.InputStream;
import java.util.Properties;
import java.util.Scanner;

public class PropertiesUtil extends Properties {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private static PropertiesUtil instance = null;

	private PropertiesUtil() { // 私有建構函式,不允許建立物件

		InputStream is = null; // 定義一個位元組輸入流

		try {
			is = PropertiesUtil.class.getResourceAsStream("/properties"); // 查詢具有給定名稱的資源。
			this.load(is);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			// 關閉資源
			try {
				is.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

	public static PropertiesUtil getInstance() { // 靜態方法,可用類名直接呼叫

		if (instance == null) { // 只允許建立一個物件

			synchronized (PropertiesUtil.class) { // 執行緒鎖,防止多執行緒併發訪問,建立多個物件

				if (instance == null) {
					instance = new PropertiesUtil();
				}
			}
		}

		return instance; // 返回類物件
	}

	public void read() {
		PropertiesUtil instance = PropertiesUtil.getInstance();
		System.out.println("讀取配置檔案中的內容: ");
		int temp = Integer.parseInt(instance.getProperty("temp"));// 引數為配置檔案的變數名
		System.out.println("temp = " + temp);
	}

	public void write() {

		System.out.println("正在將資料寫入配置檔案...");
		System.out.println("請輸入需要寫入的值:");
		Scanner sc = new Scanner(System.in);
		int temp = sc.nextInt();
		PropertiesUtil instance = PropertiesUtil.getInstance();
		instance.setProperty("temp", String.valueOf(temp));// 這裡只是修改記憶體中的資料
		FileOutputStream fos = null; // 定義一個位元組輸出流
		try {
			fos = new FileOutputStream(new File("./src/properties")); // File建構函式的引數為配置檔案的路徑
			instance.store(fos, null); // 修改檔案中的內容
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			// 關閉資源
			try {
				fos.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

	public static void main(String[] args) {
		PropertiesUtil instance = PropertiesUtil.getInstance();
		instance.read();
		instance.write();
		instance.read();
	}

}

四,執行結果如下

再看看配置檔案的內容是否修改

OK ,配置檔案的內容已經修改。