溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么使用Java代碼讀取properties配置文件

發(fā)布時間:2023-05-04 11:39:36 來源:億速云 閱讀:113 作者:iii 欄目:開發(fā)技術(shù)

本篇內(nèi)容主要講解“怎么使用Java代碼讀取properties配置文件”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“怎么使用Java代碼讀取properties配置文件”吧!

讀取properties配置文件

package com.easycrud.utils;
import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator;
import java.util.Map;
import java.util.Properties;
import java.util.concurrent.ConcurrentHashMap;
/**
 * @BelongsProject: EasyCrud
 * @BelongsPackage: com.easycrud.utils
 * @Author: xpx
 * @Email: 2436846019@qq.com
 * @CreateTime: 2023-05-02  16:05
 * @Description: 讀取properties配置文件工具類
 * @Version: 1.0
 */
public class PropertiesUtils {
    private static Properties props = new Properties();
    private static Map<String,String> PROPER_MAP = new ConcurrentHashMap<String, String>();
    /**
     * 項目初始化時就去讀取配置文件
     */
    static {
        InputStream is = null;
        try{
            is = PropertiesUtils.class.getClassLoader().getResourceAsStream("application.properties");
            props.load(is);
            Iterator<Object> iterator = props.keySet().iterator();
            while (iterator.hasNext()){
                String key = (String) iterator.next();
                PROPER_MAP.put(key,props.getProperty(key));
            }
        }catch (Exception e){
        }finally {
            if (is != null){
                try {
                    is.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    /**
     * 對外提供方法通過key取值
     * @param key
     * @return
     */
    public static String getString(String key) {
        return PROPER_MAP.get(key);
    }
    /**
     * 測試能否成功取值
     * @param args
     */
    public static void main(String[] args) {
        System.out.println("測試打印:"+getString("db.driver.name"));
    }
}

新手引導

Properties

Properties 繼承于 Hashtable。表示一個持久的屬性集.屬性列表中每個鍵及其對應值都是一個字符串。

ConcurrentHashMap

HashTable是一個線程安全的類,它使用synchronized來鎖住整張Hash表來實現(xiàn)線程安全,即每次鎖住整張表讓線程獨占,相當于所有線程進行讀寫時都去競爭一把鎖,導致效率非常低下。ConcurrentHashMap可以做到讀取數(shù)據(jù)不加鎖,并且其內(nèi)部的結(jié)構(gòu)可以讓其在進行寫操作的時候能夠?qū)㈡i的粒度保持地盡量地小,允許多個修改操作并發(fā)進行,其關鍵在于使用了鎖分段技術(shù)。它使用了多個鎖來控制對hash表的不同部分進行的修改。對于JDK1.7版本的實現(xiàn), ConcurrentHashMap內(nèi)部使用段(Segment)來表示這些不同的部分,每個段其實就是一個小的Hashtable,它們有自己的鎖。只要多個修改操作發(fā)生在不同的段上,它們就可以并發(fā)進行。JDK1.8的實現(xiàn)降低鎖的粒度,JDK1.7版本鎖的粒度是基于Segment的,包含多個HashEntry,而JDK1.8鎖的粒度就是HashEntry(首節(jié)點)。

static

static代碼塊一般用于初始化類中的靜態(tài)變量,該靜態(tài)代碼塊在類加載過程中的初始化階段執(zhí)行,并且只執(zhí)行一次。

InputStream

字節(jié)輸入流。

try...cache...finally

try{

可能發(fā)生異常的代碼

}catch(可能發(fā)生的異常類型 異常對象名){

當前異常類型的處理方式

}finally{

一定要執(zhí)行的代碼

}

IOException

IOException 是在使用流、文件和目錄訪問信息時引發(fā)的異常的基類

e.printStackTrace()

在命令行打印異常信息在程序中出錯的位置及原因。

Class.getClassLoader().getResourceAsStream()

Class是當前類的Class對象,Class.getClassLoader()是獲取當前類的類加載器。類加載器的大概作用是當需要使用一個類時,加載該類的".class"文件,并創(chuàng)建對應的class對象,將class文件加載到虛擬機的內(nèi)存。getResourceAsStream()是獲取資源的輸入流。類加載器默認是從classPath路徑加載資源。

load()

Properties的方法是逐行讀取properties配置文件,分隔成兩個字符串key和value,將他們放進Properties對象中。

Iterator

迭代器 it 的三個基本操作是 next 、hasNext 和 remove。

調(diào)用 it.next() 會返回迭代器的下一個元素,并且更新迭代器的狀態(tài)。

調(diào)用 it.hasNext() 用于檢測集合中是否還有元素。

調(diào)用 it.remove() 將迭代器返回的元素刪除。

keySet()

如果有一個Map對象,可以使用 map.keySet()方法獲取所有的key值。

A=xxx.iterator()

獲取迭代器保存在A中。

到此,相信大家對“怎么使用Java代碼讀取properties配置文件”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關內(nèi)容可以進入相關頻道進行查詢,關注我們,繼續(xù)學習!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI