最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java加載property文件配置過(guò)程解析

 更新時(shí)間:2020年02月13日 08:52:43   作者:偷懶的綠葉  
這篇文章主要介紹了java加載property文件配置過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

這篇文章主要介紹了java加載property文件配置過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

1 properties簡(jiǎn)介:

properties是一種文本文件,內(nèi)容格式為:

key = value #單行注釋

適合作為簡(jiǎn)單配置文件使用,通常作為參數(shù)配置、國(guó)際化資源文件使用。

對(duì)于復(fù)雜的配置,就需要使用XML、YML、JSON等了

2 java加載Properties:

java加載properties主要通過(guò)2個(gè)util包下的工具類(lèi): Properties類(lèi)、 ResourceBundle類(lèi)

2.1 通過(guò)Properties類(lèi)加載:

Properties類(lèi)通過(guò)load()方法加載配置信息,這個(gè)方法接收一個(gè)輸入流參數(shù):InputStream、Reader。

Properties提供get(String key) 方法讀取指定的配置項(xiàng)。

2.1.1 通過(guò)ClassLoader獲取InputStream加載:

該方式只能讀取類(lèi)路徑下的配置文件

(1)先創(chuàng)建Properties對(duì)象

(2)獲取property文件對(duì)應(yīng)的輸入流in

(3)使用Properties加載輸入流in

(4)通過(guò)Properties.get(key)方法獲取配置,如果配置信息不存在,則返回null

/**
 * 基于ClassLoader讀取properties;
 * 該方式只能讀取類(lèi)路徑下的配置文件,有局限但是如果配置文件在類(lèi)路徑下比較方便。
 */
public static void method1() {
   System.out.println("使用ClassLoader方式加載properties");
   Properties properties = new Properties();
   /*
   * 使用ClassLoader加載properties配置文件生成對(duì)應(yīng)的輸入流。
   * 使用此種方式,要求property文件必須要放在src目錄下,編譯之后會(huì)被放到class文件相同目錄下。
   * 因?yàn)镃lassLoad的基礎(chǔ)路徑是相對(duì)于編譯后class文件所在目錄(可能是bin,classes),如果將properties放在項(xiàng)目根目錄下,使用此種方式可能會(huì)找不到 properties文件
   */
   //必須要以 /開(kāi)始  , 是在classes文件根目錄下尋找
   InputStream in = PropertiesDemo.class.getResourceAsStream("/properties/a.properties");
   System.out.println(PropertiesDemo.class.getClassLoader().getResource(".").getPath());
   try {
    properties.load(in);
   } catch (IOException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
   }finally {
     closeResource(in);
   }
   
   System.out.println(properties.get("name"));
   System.out.println(properties.get("age"));
}

2.1.2 通過(guò)構(gòu)建Reader加載:

該方式的優(yōu)點(diǎn)在于可以讀取任意路徑下的配置文件

(1)創(chuàng)建Properties對(duì)象

(2)創(chuàng)建一個(gè)Reader,可以指定路徑,不局限于類(lèi)路徑

(3)使用Properties加載Reader

(4)Properties.get(key)方法讀取配置

/**
 * 使用inputStream讀取配置文件
 * 該方式的優(yōu)點(diǎn)在于可以讀取任意路徑下的配置文件
 */
public static void method2() {
   System.out.println("使用InputStream方式加載properties");
   Properties properties = new Properties();
   BufferedReader reader = null;
   try {
     /*
      * System.getProperty("user.dir"): 獲取項(xiàng)目根路徑, 而后附加配置文件的路徑
     */
     reader = new BufferedReader(new FileReader(System.getProperty("user.dir") + "/properties/a.properties"));
     properties.load(reader);
     System.out.println(properties.get("name"));
     System.out.println(properties.get("age"));
   } catch (FileNotFoundException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
   } catch (IOException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
   }finally {
     closeResource(reader);
   }
 }

2.2 通過(guò)ResourceBundle類(lèi)加載:

ResourceBundle讀取配置有2種方式:

(1)指定文件路徑 :相對(duì)于src、classes的相對(duì)路徑

(2)提供InputStream

ResourceBundle提供方法getString(key) 和 getObject(key)讀取配置項(xiàng)
使用路徑加載,不需要指定文件后綴名,且不需要手動(dòng)關(guān)閉相關(guān)資源,比Properties類(lèi)操作要簡(jiǎn)單。

/**
 * 通過(guò)ResourceBundle 讀取配置, 此種方式項(xiàng)目Properties要簡(jiǎn)單
 * ResourceBundle讀取配置有2種方式: (1)指定文件路徑 (2)提供InputStream
 */
public static void method3() {
  System.out.println("使用ResourceBundle方式加載properties");
  /*
  * (1)直接指定文件路徑:

  * 可以使用相對(duì)路徑,從類(lèi)路徑開(kāi)始,且不需要指定properties文件的后綴
  */
  ResourceBundle resource = ResourceBundle.getBundle("properties/b");
  System.out.println(resource.getString("name"));
  System.out.println(resource.getString("age"));

 


  try {
   /*
   * (2)通過(guò)InputStream加載配置:

   * 通過(guò)當(dāng)前類(lèi)的class實(shí)例,獲取資源輸入流
   */
   resource = new PropertyResourceBundle(PropertiesDemo.class.getResourceAsStream("/properties/a.properties"));
   System.out.println(resource.getString("name"));
   System.out.println(resource.getString("age"));
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java11 發(fā)布前抓緊掌握這些新特性

    Java11 發(fā)布前抓緊掌握這些新特性

    Java 11即將發(fā)布,你準(zhǔn)備好了? 在這篇文章中,我們討論下在進(jìn)入Java 11之前,你需要了解的Java 8、9和10的一些有用功能,若還在用Java 8以前的版本,那就太落伍了,這里首先要明確,Java 8:是一個(gè)針對(duì)傳統(tǒng)傳統(tǒng)版本的重大轉(zhuǎn)變
    2018-09-09
  • 使用Java 壓縮文件打包tar.gz 包的詳細(xì)教程

    使用Java 壓縮文件打包tar.gz 包的詳細(xì)教程

    本文帶領(lǐng)大家學(xué)習(xí)如何使用Java 壓縮文件打包tar.gz 包,主要通過(guò) Apache compress 工具打包,通過(guò)示例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2021-05-05
  • Java面試題沖刺第二天--Redis篇

    Java面試題沖刺第二天--Redis篇

    這篇文章主要為大家分享了最有價(jià)值的三道java面試題,涵蓋內(nèi)容全面,包括數(shù)據(jù)結(jié)構(gòu)和算法相關(guān)的題目、經(jīng)典面試編程題等,感興趣的小伙伴們可以參考一下
    2021-07-07
  • Java?HashMap詳解及實(shí)現(xiàn)原理

    Java?HashMap詳解及實(shí)現(xiàn)原理

    Java?HashMap是Java集合框架中最常用的實(shí)現(xiàn)Map接口的數(shù)據(jù)結(jié)構(gòu),它使用哈希表實(shí)現(xiàn),允許null作為鍵和值,可以存儲(chǔ)不同類(lèi)型的鍵值對(duì),在Java中,HashMap被廣泛應(yīng)用于各種場(chǎng)景,如緩存、數(shù)據(jù)庫(kù)連接池、路由器等,文中有詳細(xì)的代碼示例,需要的朋友可以參考下
    2023-05-05
  • Java實(shí)現(xiàn)利用廣度優(yōu)先遍歷(BFS)計(jì)算最短路徑的方法

    Java實(shí)現(xiàn)利用廣度優(yōu)先遍歷(BFS)計(jì)算最短路徑的方法

    這篇文章主要介紹了Java實(shí)現(xiàn)利用廣度優(yōu)先遍歷(BFS)計(jì)算最短路徑的方法,實(shí)例分析了廣度優(yōu)先遍歷算法的原理與使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-04-04
  • Spring學(xué)習(xí)筆記之bean生命周期

    Spring學(xué)習(xí)筆記之bean生命周期

    Spring Bean是Spring應(yīng)用中最最重要的部分了。下面這篇文章主要給大家介紹了關(guān)于Spring學(xué)習(xí)筆記之bean生命周期的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-12-12
  • Spring Boot 簡(jiǎn)介(入門(mén)篇)

    Spring Boot 簡(jiǎn)介(入門(mén)篇)

    Spring Boot是由Pivotal團(tuán)隊(duì)提供的全新框架,其設(shè)計(jì)目的是用來(lái)簡(jiǎn)化新Spring應(yīng)用的初始搭建以及開(kāi)發(fā)過(guò)程。下面通過(guò)本文給大家介紹spring boot相關(guān)知識(shí),需要的的朋友參考下吧
    2017-04-04
  • Java 添加超鏈接到 Word 文檔方法詳解

    Java 添加超鏈接到 Word 文檔方法詳解

    這篇文章主要介紹了Java 添加超鏈接到 Word 文檔方法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Spring數(shù)據(jù)源及配置文件數(shù)據(jù)加密實(shí)現(xiàn)過(guò)程詳解

    Spring數(shù)據(jù)源及配置文件數(shù)據(jù)加密實(shí)現(xiàn)過(guò)程詳解

    這篇文章主要介紹了Spring數(shù)據(jù)源及配置文件數(shù)據(jù)加密實(shí)現(xiàn)過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • 詳解SpringBoot迭代發(fā)布JAR瘦身配置

    詳解SpringBoot迭代發(fā)布JAR瘦身配置

    這篇文章主要介紹了詳解SpringBoot迭代發(fā)布JAR瘦身配置,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08

最新評(píng)論

崇左市| 桑植县| 怀远县| 浙江省| 鹿泉市| 涞水县| 成武县| 沁源县| 梓潼县| 邻水| 伊吾县| 贞丰县| 门源| 铁力市| 梁山县| 孝感市| 景德镇市| 静乐县| 扬中市| 年辖:市辖区| 涡阳县| 扶余县| 革吉县| 邹城市| 灯塔市| 隆子县| 儋州市| 永顺县| 山西省| 汝南县| 龙陵县| 南召县| 东海县| 盐城市| 远安县| 凌源市| 雷州市| 重庆市| 大石桥市| 东台市| 乌拉特前旗|