亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發(fā) > Java > 正文

Java程序中的配置文件的存放和讀取

2024-07-14 08:44:04
字體:
來源:轉載
供稿:網(wǎng)友

  大家可能經(jīng)常會遇到在Java程序中存取程序配置文件的需求,比如,為了能夠和不同的數(shù)據(jù)庫連接,我們經(jīng)常把數(shù)據(jù)庫連接的信息存放到屬性文件中,這些信息一般包括數(shù)據(jù)庫驅(qū)動程序類名、數(shù)據(jù)庫連接的URL,數(shù)據(jù)庫的用戶名和口令等等。為了便于程序的安裝或部署,我們經(jīng)常會把這些的配置文件存放到程序安裝的根目錄中。由于Java程序用包來分組類,有時候?qū)⑦@些配置文件放入到讀取它們的類所在的包目錄中會更好一些。比如,在下面的圖示中,將數(shù)據(jù)庫配置文件 database.properties放到數(shù)據(jù)庫讀取類所在的包目錄就是一種比較清晰的存儲方案:

 |-----------其它包目錄
|
|
-------edu.ec.database
|
|---------------ConnectionPool(數(shù)據(jù)庫連接池類)
|
|---------------Dao(數(shù)據(jù)庫訪問對象類)
|
|---------------DaoFactory(Dao的工廠類)
|
|---------------database.properties(數(shù)據(jù)庫配置屬性文件)
|
|---------------RecordSet(記錄集類)

  在這種存儲方案中,所有的與數(shù)據(jù)庫相關的類和配置文件都在同一個包目錄中;在開發(fā)過程中,配置文件和源文件也按采用這種方式進行組織,這樣會使得程序的數(shù)據(jù)庫訪問維護變得相當清晰明了。

  大部分開發(fā)工具在編譯打包這樣的源文件組織時,會自動將相關配置文件和類文件放到生成的目標文件夾中或JAR文件中。一般情況下,我們在發(fā)布自己的 Java程序時,都是以JAR或WAR形式將程序打包發(fā)布,而對應的配置文件也會按照上述的目錄格式被放到了JAR或WAR文件中,這樣,就實現(xiàn)了配置文件和程序文件打包在一起發(fā)布的目的。

  現(xiàn)在的問題是,我們?nèi)绾巫x取位于程序安裝文件中的配置文件的信息?比如,在上面的圖中, ConnectionPool是一個數(shù)據(jù)庫連接池類,它需要在系統(tǒng)啟動時自動讀取存儲在database.properties中的數(shù)據(jù)庫連接和配置信息,以便設置相關的數(shù)據(jù)庫連接。這樣,我們 就需要在程序中測定目前程序安裝或部署的位置,以便讀取對應的屬性文件。

  在很多其他語言編寫的程序中,我們可以利用一些系統(tǒng)提供的API或一些全局對象獲取目前應用程序運行所在的目錄。比如VB,我們可以使用Application對象測定當前程序的安裝位置,在Java程序中如何完成類似的任務呢?

  Java程序并沒有類似于VB那種全局對象,但如果我們觀察位于上述目錄結構中的database.properties文件,應該發(fā)現(xiàn)其處于應用程序的 CLASSPATH中,這樣,我們就可以使用Java中的類裝載器中的相關的方法,讀出這些配置文件的信息,該類名為ClassLoader.比如,在上例中,我們可以先得到ConnectinPool的類裝載器,然后測定ConnectionPool類所在的包路徑,然后利用 ConnectionPool所在的包目錄讀出database.properties文件的信息,對應的偽代碼如下:

ClassLoader loader=ConnectionPool.class.getClassLoader();
得到ConnectionPool所在的包名;
將包名轉換為對應的目錄名,存入一個名為path的字符串變量中;
調(diào)用loader的getResourceAsStream(path+"database.properties"),得到輸入流

  下面是一個可實際運行的樣例代碼片段,它可自動測定傳入的類所在的包目錄,返回傳入的屬性文件所代表的輸入流。它還有一個附加的功能:如果屬性文件直接放到了當前類所在的根目錄(比如位于JAR文件的根目錄或WAR文件的WEB-INF/classes目錄中)、系統(tǒng)的用戶目錄系統(tǒng)、系統(tǒng)其他的類路徑中時,它也可以找到;當然,如果還是找不到,它將返回null.具體的代碼如下:

public class PropHelper{
/**
*guessPropFile:
*@param cls:和要尋找的屬性文件處于相同的包中的任意的類
*@param propFile:要尋找的屬性文件名
*/
public static java.io.InputStream guessPropFile(Class cls,String propFile){
try{
//得到類的類裝載器
ClassLoader loader=cls.getClassLoader();

//先從當前類所處路徑的根目錄中尋找屬性文件
java.io.InputStream in=loader.getResourceAsStream(propFile);
if(in!=null) return in;

//沒有找到,就從該類所處的包目錄中查找屬性文件
Package pack=cls.getPackage();
if(pack!=null){
String packName=pack.getName();
String path="";
if(packName.indexOf(".") < 0 )
path=packName+"/";
else{
int start=0,end=0;
end=packName.indexOf(".");
while(end!=-1){
path=path+packName.substring(start,end)+"/";
start=end+1;
end=packName.indexOf(".",start);
}
path=path+packName.substring(start)+"/";
}
in=loader.getResourceAsStream(path+propFile);
if(in!=null) return in;
}

//如果沒有找到,再從當前系統(tǒng)的用戶目錄中進行查找
java.io.File f=null;
String curDir=System.getProperty("user.dir");
f=new java.io.File(curDir,propFile);
if(f.exists()) return new java.io.FileInputStream(f);

//如果還是沒有找到,則從系統(tǒng)所有的類路徑中查找
String classpath=System.getProperty("java.class.path");
String[] cps=classpath.split(System.getProperty("path.separator"));

for(int i=0;i < cps.length; i++){
f=new java.io.File(cps[i],propFile);
if(f.exists()) break;
f=null;
}
if(f!=null) return new java.io.FileInputStream(f);
return null;
}catch(Exception e){throw new RuntimeException(e);}

}
}

  使用舉例:利用上述的方法,可在ConnectionPool中自動查找和ConnectionPool處于同一個包目錄中的database.properties的輸入流,并利用該輸入流讀入對應的屬性值的代碼如下:

public class ConnectionPool{
//靜態(tài)初始化器,將在ConnectionPools加載時自動執(zhí)行
static{
java.util.Properties dbProp=new java.util.Properties();
java.io.InputStream in=PropHelper.guessPropFile(edu.ec.database.ConnectionPool.class,"database.properties");
if(in!=null) dbProp.load(in);
//利用dbProp,為相應的數(shù)據(jù)源對象設置相關的屬性,比如C3P0........
}
}

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
在线观看免费视频国产| 黄色网页免费看| 美女在线观看视频一区二区| 日韩avvvv在线播放| 亚洲一二三区不卡| 精品影院一区二区久久久| 亚洲一区三区在线观看| 国产成人免费在线观看不卡| 蜜臀av一区二区三区有限公司| 在线观看av网站永久| 亚洲人成色777777精品音频| 国产在线一区二区综合免费视频| 性xxxxfreexxxxx欧美丶| 永久免费无码av网站在线观看| 91免费高清视频| 中文字幕2020第一页| 精品国产乱码久久久久久蜜臀| 国产激情美女久久久久久吹潮| 欧美国产日韩一区二区三区| 女人喷潮完整视频| 欧美三级电影网站| 日本高清不卡aⅴ免费网站| 欧美日本一区二区三区四区| 亚洲欧洲www| 波多野结衣在线一区| 精品一区二区三区五区六区七区| 中文.日本.精品| 人妻无码中文字幕免费视频蜜桃| 国产a级免费视频| 欧美12一14sex性hd| 欧美高清在线一区| 九九视频免费观看视频精品| 香蕉视频国产精品| eeuss鲁片一区二区三区在线观看| 日本三级欧美三级| 欧美视频在线视频| 成年人小视频网站| 亚洲第一页中文字幕| 波多野结衣一本一道| 欧美一区三区三区高中清蜜桃| 久久成人亚洲| 日韩一级黄色av| 一区二区三区四区欧美| 中文字幕亚洲情99在线| 成人3d动漫一区二区三区91| 国产一区二区丝袜| 精品国产乱码久久久久久老虎| 亚洲人体影院| 四虎www视频| 草莓视频app18在线视频| 国产精品二区不卡| 午夜精品久久久久久毛片| 亚洲欧美日韩精品久久奇米色影视| 日韩a一区二区| 超薄肉色丝袜一二三| 色综合免费视频| 8090成年在线看片午夜| 国产精品视频一区二区三| 欧美精品少妇一区二区三区| 中文字幕线观看| 久久久99精品久久| 在线视频你懂得| 精品久久久久久久久久久久久久| 久久精品一级片| 日韩二区在线观看| 日韩一区免费观看| 国产又粗又大又爽的视频| 一区二区三区欧美精品| 亚洲av片一区二区三区| 欧美精品一区二区三区蜜桃视频| 国产日产欧美一区二区视频| 老司机av网站| 国产老女人精品毛片久久| 欧美乱妇15p| 中文字幕在线看视频国产欧美在线看完整| 欧美在线一二三四区| 国产午夜精品理论片a级大结局| 国产激情视频一区二区在线观看| 精品一区二区三区在线观看视频| 国产福利电影一区二区三区| www.17c.com喷水少妇| 波多野结衣中文字幕在线| 亚洲美女在线观看| 日本网站在线观看一区二区三区| 日本一二三区不卡| 精品综合久久88少妇激情| 国产成人一区二区| 91麻豆国产精品| 亚洲国产精品成人一区二区| 91丨porny丨国产| 日韩va亚洲va欧洲va国产| 中文字幕久久一区| 欧美日韩一区二区三区免费| 亚洲国产精品人人做人人爽| 麻豆国产精品视频| 57pao国产成人免费| 欧美一级高清大全免费观看| 国产精品77777| 激情亚洲色图| 麻豆天美蜜桃91| 亚洲精品日日夜夜| 日韩wuma| 日本特黄一级片| 日韩不卡免费高清视频| 四虎国产精品免费久久5151| 91香蕉国产线在线观看| 亚洲精品3区| 精品一区二区三区毛片| 777久久精品一区二区三区无码| 五十路中文字幕| 日韩三级在线播放| 天天影视网天天综合色在线播放| 精品人妻一区二区三区免费| 日韩三级.com| 亚洲人成电影网站色| 国产欧美日韩麻豆91| 中文字幕亚洲精品乱码| 国产精品久久久久7777婷婷| 亚洲综合极品香蕉久久网| 亚洲色图另类专区| 尤物在线免费视频| 在线欧美一区二区| 亚洲wwww| 伊人久久大香线蕉综合热线| 一本一道久久a久久精品逆3p| 欧美日本一区二区三区| 国产va在线播放| 亚洲国产视频一区二区| 国内外成人免费激情视频| 国产男小鲜肉同志免费| 午夜精品一区二区在线观看的| 中文字幕一区二区三区四区| 久久精品99久久久久久| 在线视频一区二区免费| 成人av国产| 亚洲欧美日韩电影| 天堂网av2018| 樱桃国产成人精品视频| 欧美视频在线观看一区二区三区| 尤物tv在线精品| 亚洲视频国产| 成人au免费视频影院| 美脚丝袜一区二区三区在线观看| 久久久久久久久久久久久久久久久| 久久久久综合| 高清在线视频不卡| www在线观看播放免费视频日本| www.亚洲自拍| 国产精品18hdxxxⅹ在线| 精品国产一区二区三区忘忧草| 成人国产1314www色视频| 中文字幕欧美日本乱码一线二线| 91tv亚洲精品香蕉国产一区| 日韩三级精品| 久久五月天综合| 免费av大全| 久久这里只有精品23| 国产丝袜控视频在线观看| 久久99国产精品久久99果冻传媒| 亚洲 欧美 另类人妖| 久久在线精品| 97精品欧美一区二区三区| 久久精品中文字幕一区| xf在线a精品一区二区视频网站| 电影k8一区二区三区久久| 久久品道一品道久久精品| 亚洲欧洲综合另类| 婷婷五月色综合香五月| 亚洲成人先锋电影| 男人皇宫亚洲男人2020| 婷婷激情四射网| 97色在线视频| 韩国一区二区视频| 国产aⅴ精品一区二区四区| 先锋资源中文在线| 精品美女一区| 国产成人亚洲综合色影视| 一区二区三区四区高清精品免费观看| 日产精品久久久久久久蜜臀| 神马午夜一区二区| 日本精品久久久久久| 91国产精品视频在线观看| 亚洲超碰在线观看| www.久久伊人| 色综合天天综合网国产成人网| 日本午夜一区二区| 亚洲一区二区三区sesese| 日本成人黄色免费看| 不卡视频在线播放| av网站在线免费看| 91麻豆蜜桃| 日本一级黄色录像| 亚洲风情在线资源站| 2020国产精品自拍| 人人澡人人添人人爽一区二区| 亚洲精品99久久久久| 91在线一区二区三区| 天海翼视频在线观看| 99国产超薄丝袜足j在线观看| 中国一级特黄毛片| 国产精品男女| 午夜亚洲成人| 国产精品久久色| 偷偷要色偷偷| 午夜视频一区二区| 69xxx免费视频| 国产精品久久国产三级国电话系列| 国产精品视频第一区| 欧美色图亚洲激情| 国精产品一区二区三区| 亚洲性图第一页| 欧美国产欧美亚州国产日韩mv天天看完整| 美日韩在线观看| 亚洲电影免费观看高清完整版在线| 国产精品污www在线观看| 丰满人妻妇伦又伦精品国产| www久久久久| 亚洲精品免费在线视频| 青青草97国产精品免费观看| 无码国产精品一区二区高潮| 精品人妻一区二区三区换脸明星| 欧美资源在线观看| 99中文视频在线| 色偷偷综合网| 中文字幕在线亚洲三区| 久久久久99精品| 先锋影音男人资源| 日韩综合另类| av在线不卡播放| 亚洲欧美一区二区三区| 天堂中文www在线| 久久99久久99精品免观看粉嫩| 久久久久亚洲av无码专区体验| 日韩经典一区二区| 色中色777| 97人人爽人人喊人人模波多| 波多野结衣综合网| 激情小说网站亚洲综合网| 青春草在线视频观看| 日韩视频三区| 中文字幕中文字幕一区二区| 好吊一区二区三区视频| 国产美女搞久久| 精品视频久久久久久| 日本久久久久| 97久久人国产精品婷婷| 天堂在线中文资源| 国产情侣激情自拍| 五月天亚洲综合| 免费在线视频一区二区| 91国产精品电影| 免费看啪啪网站| 丰满人妻一区二区三区无码av| 在线观看亚洲电影| 7777kkk亚洲综合欧美网站| 亚洲视频欧美在线| 美国黄色特级片| 毛片av免费观看| 精品无码人妻一区二区三| 欧洲杯什么时候开赛| 日韩一区二区三区免费看| 精品无码国模私拍视频| 视频一区二区精品的福利| 一区二区三区视频在线| 蜜桃在线一区二区三区| 色视频在线免费| 青青草99啪国产免费| 欧美华人在线视频| 午夜免费福利视频在线观看| 激情小视频在线观看| 精品入口麻豆传煤| ass大特写| 久久最新资源网| 国产福利电影| 毛片基地在线观看| 欧美视频你懂的| 国产日韩在线一区| 四虎影院观看视频在线观看| 精品少妇在线视频| 超碰97在线人人| 国产精品香蕉国产| 日韩久久久久久久久久久久久| 小明精品国产一区二区三区| 中文字幕乱在线伦视频乱在线伦视频| 成人在线免费电影| 黄色三级视频在线观看| 精品亚洲一区二区| 亚洲综合网站在线观看| 欧美黑人ⅹxxx另类猛交| 欧美大肚乱孕交hd孕妇| 国产精彩免费视频| 中文字幕第31页| 国产主播一区二区| 欧美精品久久天天躁| av影片免费在线观看| 久久只有精品| 免费精品一区二区三区在线观看| 国产va免费精品高清在线观看| 91亚洲精品丁香在线观看| 福利视频导航大全| 日日嗨av一区二区三区四区| 国产一级一级片| 欧美日韩国产高清一区二区| 99re6这里只有精品视频在线观看| 九色成人国产蝌蚪91| 亚洲老司机av| 亚洲AV成人无码网站天堂久久| 九九九伊在人线综合| 激情婷婷欧美| 天天爽夜夜爽夜夜爽| 成人天堂yy6080亚洲高清| 国内自拍欧美| 成人三级视频| 国产精品一区久久久久| 天天躁日日躁狠狠躁欧美巨大小说| 男女爱爱网站| 黄污网站在线观看| 日韩国产伦理| 精品国产伦一区二区三区免费| 精品国产一区二区三区成人影院| 美女的尿口免费视频| 综合一区av| 久久久久亚洲av无码专区桃色| 中文字幕在线三区| 国内av免费| 久久不见久久见国语| 精品国产三级电影在线观看| 色悠久久久久综合网小说|