亚洲 国产精品 日韩-亚洲 激情-亚洲 欧美 91-亚洲 欧美 成人日韩-青青青草视频在线观看-青青青草影院

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > Properties配置類怎么用?

Properties配置類怎么用?

來源:千鋒教育
發布人:zyh
時間: 2023-06-12 15:40:00 1686555600

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

Properties配置類怎么用

  一. Properties簡介

  1.概述

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

  但因為配置文件特別常用,所以Java集合庫給我們提供了一個Properties類來表示一組“配置”,專門用來處理key-value形式的配置信息。Properties類可以表示一個持久的屬性集,每個鍵及其對應的值都是字符串類型,它可以把配置信息保存在一個IO流中,或是從一個IO流中加載配置信息,因此很適合用來處理配置文件。

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

  2.配置文件

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

  在Java中,其實默認的配置文件就是以.properties為擴展名的,該文件中的每行信息都是以key=value表示的,并用#進行注釋。以下是一個典型的配置文件: 

# db.properties

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

  我們可以在eclipse等IDE工具中直接創建.properties文件,然后把上面的這些配置信息復制進去即可。

  3. 常用方法

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

public synchronized void load(InputStream inStream) throws IOException

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

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

  4. 讀取步驟

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

  (1)創建Properties實例;

  (2)調用load()方法讀取配置文件;

  (3)調用getProperty()方法獲取具體的配置信息。

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

    (4)讀寫Properties配置文件

  首先我們通過一個案例,來學習如何讀取Properties配置文件里的信息。

  (5)創建Properties文件

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

1685943729400.image

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

  由于load(InputStream)方法默認總是以ASCII編碼來讀取字節流,所以會導致讀取信息時產生亂碼,我們可以使用另一個load(Reader)重載方法來讀取:  

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

  InputStream是字節流,Reader是字符流,因為字符流在內存中已經以char類型表示了,所以不涉及到編碼問題。這樣通過以上代碼,我們就可以正常讀取包含中文的配置信息了。

  2. 讀取Properties文件

  2.1 加載配置文件

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

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) {
//創建Properties對象
Properties properties = new Properties();
try {
//設置db.properties配置文件,利用字節流來加載文件

//尋找.properties文件路徑方式一
//從當前項目的根目錄下尋找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");

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

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

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

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

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

  2.2 讀取配置信息

  在上面的代碼中,我們從配置文件中讀取了三個鍵值對,分別是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) {
//創建Properties對象
Properties properties = new Properties();
try {
//設置db.properties配置文件,利用字節流來加載文件

//尋找.properties文件路徑方式一
//從當前項目的根目錄下尋找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");

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

//從配置文件中根據指定的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();
}
}
}

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

  2.3 使用默認值讀取信息

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

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這個鍵,getProperty方法會返回我們設置的默認值"jdbc:mysql://localhost:3306/mydb"。

  3. 寫入Properties文件

  接下來我們再通過一個案例,來學習如何把配置信息寫入到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) {
//設置配置信息
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");
// 加載字節流
properties.load(inputStream);
System.out.println("properties=" + properties);
} catch (IOException e) {
e.printStackTrace();
}
}
}

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

  3.2 使用默認值寫入信息

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

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);

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

  四. 讀寫XML配置文件

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

  1.創建XML文件

  首先我們來創建一個xml格式的配置文件,如下所示:  

<?xml version="1.0" encoding="UTF-8"?>
<!-- 聲明一個properties屬性節點 -->
<!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>

  大家要注意,這里我們要使用語句來聲明一個properties根結點,大家可以根據自己的需要定義自己的節點名稱。

  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) {
// 創建Properties對象
Properties properties = new Properties();
try {
// 從當前項目的根目錄下尋找db.properties文件
InputStream inputStream = Demo25.class.getResourceAsStream("/config.xml");
// 加載字節流,從XML文件中讀取配置信息
properties.loadFromXML(inputStream);

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

// 讀取信息時設置默認值
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配置文件,并將其存儲在一個Properties對象中。在讀取XML格式的配置文件后,我們就可以通過getProperty方法來獲取配置信息了。

  3. 寫入XML配置文件

  同時,我們也可以使用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) {
// 設置配置信息
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");
// 加載字節流
properties.loadFromXML(inputStream);
System.out.println("xml=" + properties);

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

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

  五. 結語

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

  通過本文的介紹,小編相信大家已經掌握了Properties類的基本用法,包括讀寫配置文件、設置默認值、讀寫XML格式的配置文件等等。在實際開發中,我們可以結合Properties類來實現程序的配置功能,提高程序的靈活性和可維護性。

聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
锕锕锕锕锕锕锕锕轻点好疼视频| 毛片内射久久久一区| 久久精品A一国产成人免费网站| 乱熟女高潮一区二区| 人妻熟妇久久久久久精品无码专区| 少妇无码AV无码专区在线观看| 亚洲 欧美 中文 日韩AⅤ| 夜夜躁狠狠躁日日躁2022| JUX900被公每天侵犯的我| 国产成人亚洲综合无码18禁禁 | 玉蒲团Ⅱ之性战奶水潘金莲小说| ChineSe玩弄老年熟妇| 国产精品成人久久久久久久| 久久精品人人做人人综合试看| 欧美人与性口牲恔配视频| 偷拍农村老熟妇XXXXX7视频| 一本加勒比波多野结衣高清| 成 人 H动 漫在线播放日本| 黑人又大又粗又长欧美网站 | 97久久婷婷五月综合色D啪蜜芽| 国产成人久久777777| 久久大香伊蕉在人线免费AV| 日本边添边摸边做边爱边| 亚洲A片成人无码久久精品色欲| 99精品国产一区二区电影| 国产精品亚洲精品日韩已方| 免费无码成人AV在线播 | 一二三四在线观看免费高清视频| 从厨房到餐桌JOYCE| 久久精品国产亚洲无删除| 日韩人妻中文无码一区二区七区| 亚洲人成未满十八禁网站| 成 人 黄 色 视 频网址大全| 精品欧美成人高清在线观看| 日本不卡一区二区三区| 亚洲欧美激情精品一区二区| 成年美女黄网站色大片免费看| 精品人妻系列无码人妻在线不| 日本无吗无卡V免费清高清| 亚洲欧美综合精品AⅤ一区二区| 草莓榴莲秋葵绿丝污免费版18 | 熟妇人妻中文A∨无码| 一女被两男吃奶玩乳尖 | 无码人妻少妇伦在线电影| 1313午夜精品理论片| 国产亚洲美女精品久久久| 人妻被按摩师玩弄到潮喷| 亚洲日本一本DVD高清| 公侵犯人妻一区二区三区四区| 麻豆精产国品一二三区别| 无码国产69精品久久久久孕妇| 51CG10 吃瓜 爆料| 解开人妻的裙子猛烈进入| 日日摸夜夜添夜夜添无码国产| 一本一道色欲综合网中文字幕| 国产精品天干天干在线综合| 漂亮人妻洗澡被公强啪啪| 亚洲色欲色欲WWW在线看小说| 丰满少妇又爽又紧又丰满在线观看 | 精产国品一二三产区区别| 色欲色香天天天综合无码| 中文字幕人妻中文AV不卡专区| 国精产品999国精产品官网| 日本少妇被黑人猛CAO| 中国猛少妇色XXXXX| 国产中文三级全黄| 色欲蜜桃AV无码中文字幕| 365天天色综合网| 久久国产精品二国产精品| 无码无套少妇毛少18PXX| 办公室被吃奶好爽在线观看 | 中文在线官网在线| 精品久久久噜噜噜久久久| 无码AV免费不卡在线观看| 宝贝对着镜子CAO好不好| 乱人伦中文视频在线| 亚洲成在人线AV品善网好看| 国产成人一区二区三区APP| 日本WV一本一道久久香蕉| 中央气象台1一7天降水量预报图| 精品人妻一区二区浪潮av| 西西人体大胆WWW444| 动漫精品视频一区二区三区| 欧美最猛性XXXXX免费| 在线高清理伦片A| 精品人妻少妇AV一区二区三区 | YW尤物AV无码国产在线看| 蜜桃臀无码内射一区二区三区| 亚洲男人第一AV天堂| 国产真人无码作爱视频免费 | 国产乱子伦高清露脸对白| 色综合久久精品亚洲国产消防| GOGO西西自慰人体高清人体模| 麻豆精品传媒一二三区艾秋| 亚洲视频在线观看| 经典日韩成人网站在线观看| 亚洲AV成人精品一区二区三区 | 办公室撕开奶罩吮奶在线观看| 免费看行情的网站| 亚洲综合AV色婷婷国产野外 | 主人给我戴上奶牛榨乳器调教| 久久久久国产亚洲AⅤ麻豆| 亚洲国产精品无码久久久 | 亚洲人成无码网站| 精品国产一区二区三区AV 性色 | 精品国产三级A∨在线| 亚洲AV无码一区二区乱子仑 | 亚洲另类欧美综合久久图片区| 国产亚洲AV寡妇| 性一交一乱一伦一色一情孩交| 国产精品美女久久久久AV福利| 天堂А√中文在线官网| 国产成人精品A视频免费福利| 少妇厨房愉情理伦片BD在线观看| 第一次处破女01免费观看| 色噜噜狠狠色综合久色AⅤ网| 吃瓜曝光黑料155FUN| 色婷婷AV一区二区三区浪潮慧瑟| 成人影院YY111111在线观| 日日摸夜夜添夜夜添AV| 国产7色在线 | 国产| 天堂在\/线中文在线资源| 国产精品久久久久久久久免费蜜桃 | 丁香花在线视频完整版| 少妇又色又紧又爽又刺激视频| 国产95在线 | 免费| 无码人妻精品一区二区| 国产清纯美女爆白浆视频| 亚洲AⅤ永久无码一区二区三区| 国产特级毛片AAAAAAA高清| 亚洲第一无码XXXXXX| 久久国产乱子精品免费女| 一本色道久久88—综合亚洲精品| 老根嫩草1一40淑媛全文| 6080电影网站| 人妻AⅤ无码一区二区三区| 春色校园亚洲愉拍自拍| 无码免费大香伊蕉在人线国产| 国产偷窥真人视频在线观看 | 久久见久久久国产精品蜜桃| 伊人久久五月丁香综合中文亚洲| 免费无码VA一区二区三区| А√天堂 地址 在线| 熟妇的荡欲乱色欲av浪潮| 国产无遮挡18禁无码网站| 亚洲日韩AV无码| 免费无码午夜福利电影网| 边摸边脱吃奶边高潮视频免费| 太深太粗太爽太猛了视频| 好深啊太粗好烫撑满了| 一对浑圆的胸乳被揉捏| 欧美最猛黑人XXXⅩ猛男野外| 放荡爆乳女教师电影在线观看| 小荡货奶真大水多好紧视频| 久久狠狠高潮亚洲精品| CHINA末成年VIDEO学生| 熟女一区二区蜜桃视频| 好黄好污美女裸体网站| 影视先锋AV资源噜噜| 人妻蜜と1~4中文字幕月野定规 | 亚洲乱码尤物193YW最新网站| 蜜臀AV无码精品人妻色欲| 成人爽A毛片免费网站美国| 性XXXXX大片免费视频| 久久人人妻人人做人人爽| JAPANESE熟女熟妇| 无码人妻一区二区三区精品视频年 | 18岁日韩内射颜射午夜久久成人| 日韩A级成人免费无码视频| 国产在线视频一区二区三区| 中文字幕精品无码| 少妇性饥渴无码A区免费| 精品国产制服丝袜高跟| 99精品久久久久久久婷婷| 天堂А√在线中文在线| 久久精品国产亚洲AV麻豆图片| Www内射熟妇COm| 亚洲AV丰满熟妇在线播放| 免费看又黄又无码的网站| 国产AV毛片1区2区3区| 亚洲情文字幕在线一区 | 超碰97人人做人人爱可以下载| 亚洲AV成人无码久久精品黑人 | 啊灬啊灬啊灬快灬深高潮了亚洲乱色视频在线观看| 十八款夜间禁用APP| 久久久久精品国产亚洲AV| 超碰人人透人人爽人人看| 亚洲成A人片在线观看无码下载| 欧美成人精品第一区| 国产乱人伦偷精精品视频| 中文字幕日本人妻久久久免费| 少妇久久久久久被弄高潮| 久久精品熟女亚洲AV麻豆网站| 草草浮力地址线路①屁屁影院| 亚洲国产精品久久青草无码| 人人妻人人妻人人人人妻妻人人人人 | 久久精品国产99精品国产亚洲性 | 麻花传媒剧国产MV高清播放| 国产成人无码精品午夜福利A| 在线观看片免费人成视频无码|