Java讀取Properties配置檔案

2021-08-01 01:41:47 字數 3724 閱讀 5797

properties類繼承自hashtable類並且實現了map介面,使用鍵值對的形式來儲存屬性集。不過properties的鍵和值都是字串型別。

(1)load(inputstream instream)

此方法可以從.properties屬性檔案對應的檔案輸入流中,載入屬性列表到properties類物件。用於讀取properties配置檔案。

properties prop = new properties(); 

//讀取屬性檔案a.properties

inputstream in = new bufferedinputstream (new fileinputstream("a.properties"));

prop.load(in); ///載入屬性列表

iteratorit=prop.stringpropertynames().iterator();

while(it.hasnext())

in.close();

(2)store(outputstream out, string comments)

此方法將properties類物件的屬性列表儲存到輸出流中。用於寫properties配置檔案。

properties prop = new properties(); 

//儲存屬性到b.properties檔案

fileoutputstream ofile = new fileoutputstream("b.properties", true);//true表示追加開啟

prop.setproperty("phone", "10086");

prop.store(ofile, "comment");//如果comments不為空,儲存後的屬性檔案第一行會是#comments,表示注釋資訊;如果為空則沒有注釋資訊。注釋資訊後面是屬性檔案的當前儲存時間資訊。

ofile.close();

(3)getproperty/setproperty

這兩個方法是分別是獲取和設定屬性資訊。

下面是黃勇老師寫的獲取屬性檔案的工具類。

/**

* 屬性檔案工具類

*/public final class propsutil

props = new properties();

props.load(is);

} catch (ioexception e) finally catch (ioexception e) }}

return props;

}/**

* 獲取字元型屬性(預設值為空字串)

*/public static string getstring(properties props, string key)

/*** 獲取字元型屬性(可指定預設值)

*/public static string getstring(properties props, string key, string defaultvalue)

return value;

}/**

* 獲取數值型屬性(預設值為 0)

*/public static int getint(properties props, string key)

// 獲取數值型屬性(可指定預設值)

public static int getint(properties props, string key, int defaultvalue)

return value;

}/**

* 獲取布林型屬性(預設值為 false)

*/public static boolean getboolean(properties props, string key)

/*** 獲取布林型屬性(可指定預設值)

*/public static boolean getboolean(properties props, string key, boolean defaultvalue)

return value;

}}

裡面用到了castutil類,該類是為了處理一些資料轉型操作而準備的,**如下:

/**

* 轉型操作工具類

*/public final class castutil

/*** 轉為 string 型(提供預設值)

*/public static string caststring(object obj, string defaultvalue)

/*** 轉為 double 型

*/public static double castdouble(object obj)

/*** 轉為 double 型(提供預設值)

*/public static double castdouble(object obj, double defaultvalue) catch (numberformatexception e) }}

return doublevalue;

}/**

* 轉為 long 型

*/public static long castlong(object obj)

/*** 轉為 long 型(提供預設值)

*/public static long castlong(object obj, long defaultvalue) catch (numberformatexception e) }}

return longvalue;

}/**

* 轉為 int 型

*/public static int castint(object obj)

/*** 轉為 int 型(提供預設值)

*/public static int castint(object obj, int defaultvalue) catch (numberformatexception e) }}

return intvalue;

}/**

* 轉為 boolean 型

*/public static boolean castboolean(object obj)

/*** 轉為 boolean 型(提供預設值)

*/public static boolean castboolean(object obj, boolean defaultvalue)

return booleanvalue;

}}

castutil類中用到了stringutil類,它提供一些字串操作,**如下:

/**

* 字串工具類

*/public final class stringutil

return stringutils.isempty(str);

}/**

* 判斷字串是否非空

*/public static boolean isnotempty(string str)

}

這樣就可以直接運用這個工具類操作properties配置檔案了。

操作示例(獲取乙個int屬性的值,並給乙個預設值1):

properties conf = propsutil.loadprops("config.properties");

int value = propsutil.getint(conf,"key",1);

這樣操作就方便多了。

SpringMVC載入Properties檔案

在看了網上許許多多的總結注入properties檔案,總結一下其中的一種可以成功執行的例子,在多次的嘗試後我覺得有必要總結一下。我的 是把自定義的引數注入到配置類中,然後從配置類中呼叫,如下 在開始之前因為我們要進行測試,所以引入下測試的包 pom.xml檔案如下 junit junit 4.12 ...

sping原始碼分析之properties操作

看 spring 原始碼的時間也有很長一段時間了,對其中 bean 的注入也有一定的了解。總想對這一段時間的學習經歷做出總結,又不知道從何處開始。也看了從主要脈絡開始寫,本人也看了計文柯老師編寫的 spring 技術內幕 覺得將的很生動,就是對於乙個剛學習的人來說有點深奧。想從一些基礎的東西開始慢慢...

java 分行讀取

網上看了看,結合自己的需求,這是我的小demo,分享一下。提示,不要通過位元組流或者是字元流的形式進行讀取,可以直接通過bufferedreader 流的形式進行流讀取,就沒有換行符無法區分的問題,之後通過readline方法獲取到流的內容。bufferedreader bre null listr...