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...