久久精品国产亚洲高清|精品日韩中文乱码在线|亚洲va中文字幕无码久|伊人久久综合狼伊人久久|亚洲不卡av不卡一区二区|精品久久久久久久蜜臀AV|国产精品19久久久久久不卡|国产男女猛烈视频在线观看麻豆

    1. <style id="76ofp"></style>

      <style id="76ofp"></style>
      <rt id="76ofp"></rt>
      <form id="76ofp"><optgroup id="76ofp"></optgroup></form>
      1. 千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

        手機(jī)站
        千鋒教育

        千鋒學(xué)習(xí)站 | 隨時(shí)隨地免費(fèi)學(xué)

        千鋒教育

        掃一掃進(jìn)入千鋒手機(jī)站

        領(lǐng)取全套視頻
        千鋒教育

        關(guān)注千鋒學(xué)習(xí)站小程序
        隨時(shí)隨地免費(fèi)學(xué)習(xí)課程

        當(dāng)前位置:首頁  >  技術(shù)干貨  > Properties配置類怎么用?

        Properties配置類怎么用?

        來源:千鋒教育
        發(fā)布人:zyh
        時(shí)間: 2023-06-12 15:40:00 1686555600

          全文大約【3600】字,不說廢話,只講可以讓你學(xué)到技術(shù)、明白原理的純干貨!本文帶有豐富的案例及配圖視頻,讓你更好地理解和運(yùn)用文中的技術(shù)概念,并可以給你帶來具有足夠啟迪的思考......

        Properties配置類怎么用

          一. Properties簡介

          1.概述

          在Java開發(fā)中,我們經(jīng)常需要讀取和寫入配置文件,用來存儲程序中的一些配置信息,例如數(shù)據(jù)庫的連接信息、郵件和Web服務(wù)器的信息、消息隊(duì)列的信息等等。配置文件一般都是key-value形式,且它的key-value一般都是String-String類型的,因此我們完全可以用Map來表示它。

          但因?yàn)榕渲梦募貏e常用,所以Java集合庫給我們提供了一個(gè)Properties類來表示一組“配置”,專門用來處理key-value形式的配置信息。Properties類可以表示一個(gè)持久的屬性集,每個(gè)鍵及其對應(yīng)的值都是字符串類型,它可以把配置信息保存在一個(gè)IO流中,或是從一個(gè)IO流中加載配置信息,因此很適合用來處理配置文件。

          Properties的內(nèi)部本質(zhì)上是一個(gè)Hashtable,該類從Hashtable中繼承了get()和put()方法,這些方法的參數(shù)簽名是Object。但由于歷史遺留原因,Properties的設(shè)計(jì)實(shí)際上是有問題的,不過為了保持兼容性,現(xiàn)在已經(jīng)沒法修改了。所以我們在使用Properties時(shí),不要去調(diào)用這些從Hashtable繼承來的方法,而應(yīng)該使用Properties自身關(guān)于讀寫配置的方法,比如getProperty()和setProperty()等方法。

          2.配置文件

          既然今天我們想利用Properties類來對配置文件進(jìn)行讀取,所以首先我們得認(rèn)識一下什么是配置文件。在Java中,配置文件其實(shí)有多種格式,可以是 .txt、.xml、.properties、.yml、.json等格式,今天小編要給大家介紹的就是基于.properties格式的配置文件。

          在Java中,其實(shí)默認(rèn)的配置文件就是以.properties為擴(kuò)展名的,該文件中的每行信息都是以key=value表示的,并用#進(jìn)行注釋。以下是一個(gè)典型的配置文件: 

        # db.properties

        #數(shù)據(jù)庫的url
        jdbc.url=jdbc:mysql://localhost:3306/mydb
        #用戶名
        jdbc.username=root
        #密碼
        jdbc.password=root

          我們可以在eclipse等IDE工具中直接創(chuàng)建.properties文件,然后把上面的這些配置信息復(fù)制進(jìn)去即可。

          3. 常用方法

          我們在使用Properties類讀寫配置文件時(shí),常常會用到以下方法:  

        public synchronized void load(InputStream inStream) throws IOException

        public synchronized void store(OutputStream out, String comments) throws IOException

          其中,load()方法用于從指定的輸入流中讀取屬性列表(鍵和元素對),store()方法用于將Properties中的鍵值對存儲到指定的輸出流中。

          4. 讀取步驟

          在Java中利用Properties類讀取配置文件的信息,一般要經(jīng)歷如下三步:

         ?。?)創(chuàng)建Properties實(shí)例;

         ?。?)調(diào)用load()方法讀取配置文件;

         ?。?)調(diào)用getProperty()方法獲取具體的配置信息。

          了解了以上這些內(nèi)容之后,接下來,小編會通過幾個(gè)例子來給大家詳細(xì)地介紹Properties的使用方法。

            (4)讀寫Properties配置文件

          首先我們通過一個(gè)案例,來學(xué)習(xí)如何讀取Properties配置文件里的信息。

          (5)創(chuàng)建Properties文件

          為了方便測試,我們可以先在項(xiàng)目中創(chuàng)建一個(gè).properties的配置文件。小編這里就把該配置文件命名為db.properties了,如下圖所示:

        1685943729400.image

          大家要注意,在早期的JDK中,.properties配置文件采用了ASCII編碼,具體來說是ISO8859-1編碼。在這種編碼中,如果文件中存在中文,這些中文必須使用username=\u4e2d\u6587的形式來表示,非常別扭。而從JDK 9開始,.properties配置文件就可以使用UTF-8編碼了。

          由于load(InputStream)方法默認(rèn)總是以ASCII編碼來讀取字節(jié)流,所以會導(dǎo)致讀取信息時(shí)產(chǎn)生亂碼,我們可以使用另一個(gè)load(Reader)重載方法來讀取:  

        Properties props = new Properties();
        props.load(new FileReader("db.properties", StandardCharsets.UTF_8));

          InputStream是字節(jié)流,Reader是字符流,因?yàn)樽址髟趦?nèi)存中已經(jīng)以char類型表示了,所以不涉及到編碼問題。這樣通過以上代碼,我們就可以正常讀取包含中文的配置信息了。

          2. 讀取Properties文件

          2.1 加載配置文件

          接下來我們可以使用Properties類的load()方法,來讀取上面創(chuàng)建的配置文件,例如:  

        import java.io.FileInputStream;
        import java.io.IOException;
        import java.io.InputStream;
        import java.net.URL;
        import java.util.Properties;

        public class Demo23 {
        public static void main(String[] args) {
        //創(chuàng)建Properties對象
        Properties properties = new Properties();
        try {
        //設(shè)置db.properties配置文件,利用字節(jié)流來加載文件

        //尋找.properties文件路徑方式一
        //從當(dāng)前項(xiàng)目的根目錄下尋找db.properties文件
        URL url = Demo23.class.getResource("/db.properties");
        String path = url.getPath();
        System.out.println("path="+path);
        InputStream inputStream = new FileInputStream(path);

        //尋找.properties文件路徑方式二
        //InputStream inputStream = Demo23.class.getResourceAsStream("/db.properties");

        //加載字節(jié)流
        properties.load(inputStream);
        System.out.println("properties="+properties);
        } catch (IOException e) {
        e.printStackTrace();
        }
        }
        }

          在一個(gè)普通的Java項(xiàng)目中,如果我們想讀取.properties配置文件,可以有兩種方式:

          1.類名.class.getResource("配置文件路徑及名稱"):該方式會得到一個(gè)URL對象,它代表了配置文件的路徑;

          2.類名.class.getResourceAsStream("配置文件路徑及名稱"):該方式會直接得到InputStream對象。

          在上面的代碼中,我們讀取到了名為db.properties的配置文件,并將其存儲在一個(gè)Properties對象中。

          2.2 讀取配置信息

          在上面的代碼中,我們從配置文件中讀取了三個(gè)鍵值對,分別是jdbc.url、jdbc.username和jdbc.password。在讀取配置文件后,接下來我們就可以通過getProperty()方法來獲取配置信息了。如果配置文件中不存在這些鍵,getProperty()方法將會返回null。 

        import java.io.FileInputStream;
        import java.io.IOException;
        import java.io.InputStream;
        import java.net.URL;
        import java.util.Properties;

        public class Demo23 {
        public static void main(String[] args) {
        //創(chuàng)建Properties對象
        Properties properties = new Properties();
        try {
        //設(shè)置db.properties配置文件,利用字節(jié)流來加載文件

        //尋找.properties文件路徑方式一
        //從當(dāng)前項(xiàng)目的根目錄下尋找db.properties文件
        URL dbUrl = Demo23.class.getResource("/db.properties");
        String path = dbUrl.getPath();
        System.out.println("path="+path);
        InputStream inputStream = new FileInputStream(path);

        //尋找.properties文件路徑方式二
        //InputStream inputStream = Demo23.class.getResourceAsStream("/db.properties");

        //加載字節(jié)流
        properties.load(inputStream);
        System.out.println("properties="+properties);

        //從配置文件中根據(jù)指定的key來讀取配置信息
        String url = properties.getProperty("jdbc.url");
        String username = properties.getProperty("jdbc.username");
        String password = properties.getProperty("jdbc.password");
        System.out.println("[url]="+url+" ,[username]="+username+" ,[password]="+password);
        } catch (IOException e) {
        e.printStackTrace();
        }
        }
        }

          要注意,我們在調(diào)用getProperty()方法獲取配置信息時(shí),如果指定的key不存在,會返回null。但我們可以提供一個(gè)默認(rèn)值,這樣當(dāng)key不存在時(shí)會返回一個(gè)默認(rèn)值。并且如果有多個(gè).properties文件,可以反復(fù)調(diào)用load()讀取,后讀取的key-value會覆蓋已讀取的key-value。

          2.3 使用默認(rèn)值讀取信息

          在讀取配置文件時(shí),如果某個(gè)鍵不存在,getProperty()方法將返回null。為了避免出現(xiàn)NullPointerException,我們可以為getProperty()方法指定一個(gè)默認(rèn)值,例如:  

        String url = properties.getProperty("jdbc.url", "jdbc:mysql://localhost:3306/mydb");
        String username = properties.getProperty("jdbc.username", "root");
        String password = properties.getProperty("jdbc.password", "root");

          在以上代碼中,如果配置文件中不存在jdbc.url這個(gè)鍵,getProperty方法會返回我們設(shè)置的默認(rèn)值"jdbc:mysql://localhost:3306/mydb"。

          3. 寫入Properties文件

          接下來我們再通過一個(gè)案例,來學(xué)習(xí)如何把配置信息寫入到Properties文件里。

          3.1 寫入配置文件

          我們可以使用Properties類的store方法來寫入配置文件,例如:  

        import java.io.FileOutputStream;
        import java.io.IOException;
        import java.io.InputStream;
        import java.io.OutputStream;
        import java.net.URL;
        import java.util.Properties;

        public class Demo24 {
        public static void main(String[] args) {
        //設(shè)置配置信息
        Properties properties = new Properties();
        properties.setProperty("jdbc.url", "jdbc:mysql://localhost:3306/mydb2");
        properties.setProperty("jdbc.username", "root");
        properties.setProperty("jdbc.password", "syc");

        try {
        URL dbUrl = Demo24.class.getResource("/db.properties");
        String path = dbUrl.getPath();
        System.out.println("path="+path);
        OutputStream outputStream = new FileOutputStream(path);
        //寫入配置信息
        properties.store(outputStream, "Database connection properties");

        // 尋找.properties文件路徑方式二
        InputStream inputStream = Demo24.class.getResourceAsStream("/db.properties");
        // 加載字節(jié)流
        properties.load(inputStream);
        System.out.println("properties=" + properties);
        } catch (IOException e) {
        e.printStackTrace();
        }
        }
        }

          以上代碼中,小編將三個(gè)鍵值對寫入到了名為db.properties的配置文件中,并添加了一行注釋“Database connection properties”。

          3.2 使用默認(rèn)值寫入信息

          另外在Properties類中,其實(shí)本身就有一個(gè)默認(rèn)的Properties對象,可以用來設(shè)置一些默認(rèn)屬性值。我們可以使用Properties類的getDefaultProperties()方法來獲取默認(rèn)的Properties對象,然后使用setProperty()方法來設(shè)置默認(rèn)屬性值,例如:  

        Properties defaultProperties = Properties.getDefaultProperties();
        defaultProperties.setProperty("jdbc.url", "jdbc:mysql://localhost:3306/mydb");
        defaultProperties.setProperty("jdbc.username", "root");
        defaultProperties.setProperty("jdbc.password", "root");

        Properties properties = new Properties(defaultProperties);

          以上代碼中,我們先獲取了默認(rèn)的Properties對象,然后設(shè)置了jdbc.url、jdbc.username和jdbc.password三個(gè)默認(rèn)屬性值。接著,我們創(chuàng)建了一個(gè)新的Properties對象,并將默認(rèn)的Properties對象傳遞給它。這樣,在讀取配置文件時(shí),如果某個(gè)鍵不存在,getProperty方法就會先在當(dāng)前Properties對象中查找,如果找不到,就會在默認(rèn)Properties對象中查找。

          四. 讀寫XML配置文件

          其實(shí)Properties類不僅可以操作.properties配置文件,也可以操作.xml格式的文件,接下來小編再給大家講一下如何操作xml文件。

          1.創(chuàng)建XML文件

          首先我們來創(chuàng)建一個(gè)xml格式的配置文件,如下所示:  

        <?xml version="1.0" encoding="UTF-8"?>
        <!-- 聲明一個(gè)properties屬性節(jié)點(diǎn) -->
        <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
        <properties>
        <entry key="jdbc.url">jdbc:mysql://localhost:3306/mydb</entry>
        <entry key="jdbc.username">root</entry>
        <entry key="jdbc.password">root</entry>
        </properties>

          大家要注意,這里我們要使用語句來聲明一個(gè)properties根結(jié)點(diǎn),大家可以根據(jù)自己的需要定義自己的節(jié)點(diǎn)名稱。

          2. 讀取XML配置文件

          要想讀取XML格式的配置文件,可以使用loadFromXML()方法從XML文件中讀取配置信息,例如: 

        import java.io.IOException;
        import java.io.InputStream;
        import java.util.Properties;


        public class Demo25 {
        public static void main(String[] args) {
        // 創(chuàng)建Properties對象
        Properties properties = new Properties();
        try {
        // 從當(dāng)前項(xiàng)目的根目錄下尋找db.properties文件
        InputStream inputStream = Demo25.class.getResourceAsStream("/config.xml");
        // 加載字節(jié)流,從XML文件中讀取配置信息
        properties.loadFromXML(inputStream);

        // 從配置文件中根據(jù)指定的key來讀取配置信息

        // 讀取信息時(shí)設(shè)置默認(rèn)值
        String url = properties.getProperty("jdbc.url","jdbc:mysql://localhost:3306/mydb2");
        String username = properties.getProperty("jdbc.username", "syc");
        String password = properties.getProperty("jdbc.password", "syc");
        System.out.println("[url]="+url+" ,[username]="+username+" ,[password]="+password);
        } catch (IOException e) {
        e.printStackTrace();
        }
        }
        }

          以上代碼讀取了名為config.xml的XML配置文件,并將其存儲在一個(gè)Properties對象中。在讀取XML格式的配置文件后,我們就可以通過getProperty方法來獲取配置信息了。

          3. 寫入XML配置文件

          同時(shí),我們也可以使用storeToXML()方法,將Properties中的鍵值對信息存儲到XML格式的輸出流中,例如:  

        import java.io.FileOutputStream;
        import java.io.IOException;
        import java.io.InputStream;
        import java.io.OutputStream;
        import java.net.URL;
        import java.util.Properties;


        public class Demo26 {
        public static void main(String[] args) {
        // 設(shè)置配置信息
        Properties properties = new Properties();
        properties.setProperty("jdbc.url", "jdbc:mysql://localhost:3306/mydb2");
        properties.setProperty("jdbc.username", "root");
        properties.setProperty("jdbc.password", "syc");

        try {
        URL dbUrl = Demo26.class.getResource("/config.xml");
        String path = dbUrl.getPath();
        OutputStream outputStream = new FileOutputStream(path);
        // 寫入配置信息
        properties.storeToXML(outputStream, "Database connection properties");

        // 尋找.properties文件路徑方式二
        InputStream inputStream = Demo26.class.getResourceAsStream("/config.xml");
        // 加載字節(jié)流
        properties.loadFromXML(inputStream);
        System.out.println("xml=" + properties);

        } catch (IOException e) {
        e.printStackTrace();
        }
        }
        }

          在以上代碼中,我們將三個(gè)鍵值對寫入了一個(gè)名為config.xml的XML配置文件中,并添加了一行注釋“Database connection properties”。

          五. 結(jié)語

          在本文中,小編為大家詳細(xì)介紹了Java中的Properties配置類,它是用來處理配置文件的一個(gè)實(shí)用工具類,該類可以從文件系統(tǒng)、classpath或其他任何地方讀取.properties文件。我們在讀寫Properties時(shí),注意僅使用getProperty()和setProperty()方法,不要調(diào)用繼承而來的get()和put()等方法。

          通過本文的介紹,小編相信大家已經(jīng)掌握了Properties類的基本用法,包括讀寫配置文件、設(shè)置默認(rèn)值、讀寫XML格式的配置文件等等。在實(shí)際開發(fā)中,我們可以結(jié)合Properties類來實(shí)現(xiàn)程序的配置功能,提高程序的靈活性和可維護(hù)性。

        聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
        10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
        請您保持通訊暢通,專屬學(xué)習(xí)老師24小時(shí)內(nèi)將與您1V1溝通
        免費(fèi)領(lǐng)取
        今日已有369人領(lǐng)取成功
        劉同學(xué) 138****2860 剛剛成功領(lǐng)取
        王同學(xué) 131****2015 剛剛成功領(lǐng)取
        張同學(xué) 133****4652 剛剛成功領(lǐng)取
        李同學(xué) 135****8607 剛剛成功領(lǐng)取
        楊同學(xué) 132****5667 剛剛成功領(lǐng)取
        岳同學(xué) 134****6652 剛剛成功領(lǐng)取
        梁同學(xué) 157****2950 剛剛成功領(lǐng)取
        劉同學(xué) 189****1015 剛剛成功領(lǐng)取
        張同學(xué) 155****4678 剛剛成功領(lǐng)取
        鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
        董同學(xué) 138****2867 剛剛成功領(lǐng)取
        周同學(xué) 136****3602 剛剛成功領(lǐng)取
        相關(guān)推薦HOT
        PUE是什么?

        一、PUE是什么PUE,即功耗比(Power Usage Effectiveness),是數(shù)據(jù)中心的能源效率指標(biāo)。它是數(shù)據(jù)中心總功耗與設(shè)備功耗的比值,用于評估數(shù)據(jù)中...詳情>>

        2023-10-15 07:13:07
        graph cut和graph cuts有什么區(qū)別?

        1.語境不同graph cut”通常在描述一個(gè)操作時(shí)使用,比如”perform a graph cut”,它指的是在圖中找到一個(gè)切割,將圖劃分為兩個(gè)...詳情>>

        2023-10-15 07:02:16
        什么是雙機(jī)熱備?

        一、雙機(jī)熱備的原理雙機(jī)熱備是指在系統(tǒng)中配置兩臺服務(wù)器(主服務(wù)器和備份服務(wù)器),兩者通過高速網(wǎng)絡(luò)連接進(jìn)行實(shí)時(shí)數(shù)據(jù)同步和狀態(tài)同步。主服務(wù)器...詳情>>

        2023-10-15 06:37:02
        偏最小二乘支持向量機(jī)和支持向量機(jī)回歸的區(qū)別是什么?

        1.模型構(gòu)建的理論基礎(chǔ)不同支持向量機(jī)回歸(SVR)基于統(tǒng)計(jì)學(xué)習(xí)理論,其主要思想是找到一個(gè)超平面,使得大部分?jǐn)?shù)據(jù)點(diǎn)都在這個(gè)超平面的一定范圍內(nèi),...詳情>>

        2023-10-15 06:30:45
        VAE、GAN和transformer有什么區(qū)別?

        1.模型結(jié)構(gòu)不同VAE(變分自編碼器)是一種生成模型,其基于概率圖模型和自編碼器,能夠?qū)W習(xí)數(shù)據(jù)的潛在分布。GAN(生成對抗網(wǎng)絡(luò))同樣是一種生成...詳情>>

        2023-10-15 06:10:12
        保定市| 平塘县| 天祝| 姜堰市| 都昌县| 益阳市| 黔江区| 湖口县| 湘西| 龙门县| 贺兰县| 稻城县| 自贡市| 邮箱| 兴和县| 新晃| 广河县| 图木舒克市| 内江市| 湛江市| 鄂温| 新闻| 博兴县| 乐都县| 南澳县| 兴安县| 浏阳市| 岱山县| 旌德县| 精河县| 西吉县| 敖汉旗| 赤城县| 宕昌县| 常州市| 汉寿县| 淮南市| 安康市| 泰宁县| 且末县| 娄烦县|