先提出下面兩個問題:
問題1:采用什么方式來保存軟件配置信息
問題2:怎么保存配置信息
下面就以上兩個問題展開講述:
1.保存配置文件的方法有很多種
A.將配置信息保存在注冊表中(如果保存在注冊表中對于java的跨平臺性是一個破壞,因為不同操作系統的所謂注冊表的存儲方式是不同的)
B.將配置信息保存在任意類型的文件中,由于Java里有專門提供用于對配置文件讀寫的類庫,所以我們在這里介紹properties類型的配置文件,
注意這里properties只是一個大家公認的配置文件后綴而已,沒有什么特別的意義!
(當然還有其他方法,在這里主要介紹properties類型的配置文件)
2.對配置信息的操作無非就兩種,從配置文件中讀取信息,并將信息賦值給程序中的相應變量,還有就是當軟件運行到某一個特定的時候,手動或自
動將軟件中的某些信息寫入到配置文件中,以便于以后的調用.為了方便的對properties類型的配置文件進行操作,在這里介紹一個Java提供的
一個類:Properties大家可以查看API以了解此類的詳細信息.
對于最簡單的應用,這里只用到Properties中的三個方法:
1.void load(InputStream inStream)從輸入流中讀取屬性列表(鍵和元素對)。這個inStream可以有多種取得的方法,這里只介紹一種通過
ClassName.class.getClassLoader().getResourceAsStream()來取得properties文件.通常:ClassName.class.getClassLoader ().getResourceAsStream(““)取得的是
WEB-INF的下級目錄,比如ClassName.class.getClassLoader().getResourceAsStream(“db.properties“).在Tomcat中,可以通過增加”../”來取得上層目錄
,即WEB-INF目錄,這樣就可以把properties放在WEB-INF中統一管理。但是WLS不識別”../”。另外一種土辦法,就是不返回classLoader,
直接ClassName.class.getResourceAsStream()。然后通過多個”../”(小于6個)來返回相應的上級目錄。當然,如果類擴展了HttpServlet,可以通過
getServletContext().getRealPath("/")來取得Web部署目錄的絕對路徑。
2. String getProperty(String key)用指定的鍵在此屬性列表中搜索屬性。
3. Object setProperty(String key, String value)調用 Hashtable 的方法 put。
4. void store(OutputStream out, String comments) 以適合使用 load(InputStream) 方法加載到Properties 表中的格式,將此Properties 表中的屬性列表(鍵和元素對)
寫入輸出流。
在讀之前必須要用1方法得到輸入流,在寫之前必須先建一個到配置文件的輸出流作為4的參數,寫完后用4方法
處于Singleton設計模式的考慮,建議把整個對配置文件的操作寫成一個類,并且將所有變量方法全部設置為靜態
