亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

淺談Java中Properties類的詳細(xì)使用

 更新時(shí)間:2021年06月25日 11:21:16   作者:兩個(gè)蝴蝶飛  
properties類繼承自hashtable,通常和io流結(jié)合使用。它最突出的特點(diǎn)是將key/value作為配置屬性寫入到配置文件中以實(shí)現(xiàn)配置持久化,或從配置文件中讀取這些屬性。它的這些配置文件的規(guī)范后綴名為".properties"。表示了一個(gè)持久的屬性集

一、Properties 類

Properties 類位于 java.util.Properties ,是Java 語言的配置文件所使用的類, Xxx.properties 為Java 語言常見的配置文件,如數(shù)據(jù)庫的配置 jdbc.properties, 系統(tǒng)參數(shù)配置 system.properties。 這里,講解一下Properties 類的具體使用。
以key=value 的 鍵值對的形式進(jìn)行存儲(chǔ)值。 key值不能重復(fù)。

在這里插入圖片描述

繼承了Hashtable 類,以Map 的形式進(jìn)行放置值, put(key,value) get(key)

主要方法:

1. 構(gòu)造方法

這里只講解一些常用的形式。

二、打印JVM參數(shù)

JVM 中可以獲取Properties, 來打印輸出 JVM 所了解的屬性值。
用list() 方法,打印到控制臺(tái)。

@Test
public void printTest(){
    Properties properties=System.getProperties();
    properties.list(System.out);
}

常見的有:

在這里插入圖片描述

三、打印自定義.properties文件中的值

在src 目錄下,放置 jdbc.properties 文件,是數(shù)據(jù)庫的配置文件。

jdbc.driver=com.mysql.jdbc.Driver

jdbc.url=jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf8

jdbc.username=root

jdbc.password=abc123

3.1、list輸出到控制臺(tái)用絕對路徑加載

@Test
public void name1Test(){
    try{
        Properties properties=new Properties();
        //用的是磁盤符的絕對路徑 
        InputStream input=new BufferedInputStream(new FileInputStream("D:\\workspace\\JavaLearn\\src\\jdbc.properties"));
        properties.load(input);
        properties.list(System.out);
    }catch(Exception e){
        e.printStackTrace();
    }
}

url 被截取了。

在這里插入圖片描述

3.2、propertyNames輸出getClass()加載

@Test
public void name2Test(){
    try{
        Properties properties=new Properties();  // 用/文件名, / 表示根目錄
        InputStream input=PropertiesTest.class.getClass().getResourceAsStream("/jdbc.properties");
        properties.load(input);
        Enumeration<String> names=(Enumeration<String>) properties.propertyNames();
        while(names.hasMoreElements()){
            //這是key值
            String key=names.nextElement();
            String value=properties.getProperty(key);
            System.out.println(key+"="+value);
        }
    }catch(Exception e){
        e.printStackTrace();
    }
}

在這里插入圖片描述

3.3、stringPropertyNames輸出getClassLoader加載(推薦)

@Test
public void name3Test(){
    try{
        Properties properties=new Properties();
        //直接寫src 類路徑下的文件名
        InputStream input=PropertiesTest.class.getClassLoader().getResourceAsStream("jdbc.properties");
        properties.load(input);
        
        //把key值轉(zhuǎn)換成set 的形式,遍歷set
        Set<String> names=properties.stringPropertyNames();
        Iterator<String> iterator=names.iterator();
        while(iterator.hasNext()){
            String key=iterator.next();
            String value=properties.getProperty(key);
            System.out.println(key+"="+value);
        }
        
    }catch(Exception e){
        e.printStackTrace();
    }
}

在這里插入圖片描述

四、獲取值getProperties

@Test
public void name3Test(){
    try{
        Properties properties=new Properties();
        InputStream input=PropertiesTest.class.getClassLoader().getResourceAsStream("jdbc.properties");
        properties.load(input);
        //String value=properties.getProperty("jdbc.url");
        String value=properties.getProperty("jdbc.url1","沒有該key值");
        System.out.println("輸出值:"+value);
        
    }catch(Exception e){
        e.printStackTrace();
    }
}

輸出時(shí),getProperty() 有當(dāng)前的key值,則輸出Key值對應(yīng)的value 值。
如果沒有key值,則輸出 null 值。
后面可以跟 default 值,如果沒有該值,則輸出設(shè)置的默認(rèn)值。

在這里插入圖片描述

五、寫入到Properties文件

5.1、普通寫入,中文時(shí)亂碼

@Test
public void writeTest(){
    try{
        Properties properties=new Properties();
        InputStream input=PropertiesTest.class.getClassLoader().getResourceAsStream("jdbc.properties");
        properties.load(input);
        
        //多添加幾個(gè)值。
        properties.setProperty("name","兩個(gè)蝴蝶飛");
        properties.setProperty("sex","男");

        //properties.put("name","兩個(gè)蝴蝶飛");  可以用繼承Hashtable 的put 方法寫入值
        // properties.put("sex","男");
        
        //將添加的值,連同以前的值一起寫入 新的屬性文件里面。
        OutputStream out=new FileOutputStream("D:\\jdbc.properties");
        properties.store(out,"填充數(shù)據(jù)");
        
    }catch(Exception e){
        e.printStackTrace();
    }
}

在這里插入圖片描述

5.2、解決亂碼寫入的問題

在構(gòu)建輸入流和輸出流時(shí),指定編碼格式, 編碼的格式相同。 如均是 utf-8的形式。

@Test
public void write2Test(){
    try{
        Properties properties=new Properties();
        //用絕對路徑
        InputStream input=new BufferedInputStream(new FileInputStream("D:\\workspace\\JavaLearn\\src\\jdbc.properties"));
        properties.load(new InputStreamReader(input,"utf-8"));
            //多添加幾個(gè)值。
        properties.setProperty("name","兩個(gè)蝴蝶飛");
        properties.setProperty("sex","男");
        
        OutputStream output=new FileOutputStream("D:\\jdbc.properties");
        OutputStreamWriter out=new OutputStreamWriter(output,"utf-8");
        properties.store(out,"填充數(shù)據(jù)");
        
    }catch(Exception e){
        e.printStackTrace();
    }
}

測試運(yùn)行之后:

在這里插入圖片描述

這樣便解決了亂碼的問題。

六、加載和導(dǎo)出到xml配置文件

6.1、導(dǎo)出到.xml配置文件storeToXML

將Properties 類中定義的屬性,導(dǎo)出成 .xml 的形式.

@Test
public void xmlWriteTest(){
    try{
        //處理成編碼樣式。
        Properties properties=new Properties();
        
            //多添加幾個(gè)值。
        properties.setProperty("name","兩個(gè)蝴蝶飛");
        properties.setProperty("sex","男");
        OutputStream output=new FileOutputStream("D:\\jdbc.xml");
        //編碼設(shè)置成utf-8的形式。 
        properties.storeToXML(output,"填充到xml","utf-8");
        
    }catch(Exception e){
        e.printStackTrace();
    }
}

測試結(jié)果為:

在這里插入圖片描述

用 <entry> 節(jié)點(diǎn) key為屬性, 后面跟值來進(jìn)行輸入。
可按照這種形式,繼續(xù)添加。

6.2、導(dǎo)出XML配置文件loadFromXML

@Test
public void xmlReadTest(){
    try{
        Properties properties=new Properties();
        InputStream input=new BufferedInputStream(new FileInputStream("D:\\jdbc.xml"));
        properties.loadFromXML(input);
        properties.list(System.out);
        
    }catch(Exception e){
        e.printStackTrace();
    }
}

在這里插入圖片描述

以上就是淺談Java中Properties類的詳細(xì)使用的詳細(xì)內(nèi)容,更多關(guān)于Java Properties的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • SpringBoot中郵件任務(wù)的使用

    SpringBoot中郵件任務(wù)的使用

    這篇文章主要介紹了SpringBoot中郵件任務(wù)的使用,SpringBoot?郵件任務(wù)是指使用SpringBoot框架來實(shí)現(xiàn)郵件發(fā)送和接收的功能,通過SpringBoot的自動(dòng)配置和簡化的開發(fā)流程,我們可以輕松地集成郵件功能到我們的應(yīng)用程序中,需要的朋友可以參考下
    2023-10-10
  • 關(guān)于JWT之token令牌認(rèn)證登錄

    關(guān)于JWT之token令牌認(rèn)證登錄

    這篇文章主要介紹了關(guān)于JWT之token令牌認(rèn)證登錄,使用JWT能夠保證Token的安全性,且能夠進(jìn)行Token時(shí)效性的檢驗(yàn),使用JWT時(shí),登錄成功后將用戶信息生成一串令牌字符串,需要的朋友可以參考下
    2023-05-05
  • Springboot通過配置WebMvcConfig處理Cors非同源訪問跨域問題

    Springboot通過配置WebMvcConfig處理Cors非同源訪問跨域問題

    這篇文章主要介紹了Springboot通過配置WebMvcConfig處理Cors非同源訪問跨域問題,關(guān)于Cors跨域的問題,前端有代理和jsonp的常用方式解決這種非同源的訪問拒絕策略
    2023-04-04
  • java eclipse 整個(gè)項(xiàng)目或包查找只定字符串并替換操作

    java eclipse 整個(gè)項(xiàng)目或包查找只定字符串并替換操作

    這篇文章主要介紹了java eclipse 整個(gè)項(xiàng)目或包查找只定字符串并替換操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • Java獲得一個(gè)數(shù)組的指定長度排列組合算法示例

    Java獲得一個(gè)數(shù)組的指定長度排列組合算法示例

    這篇文章主要介紹了Java獲得一個(gè)數(shù)組的指定長度排列組合算法,結(jié)合實(shí)例形式分析了java排列組合相關(guān)數(shù)組遍歷、運(yùn)算操作技巧,需要的朋友可以參考下
    2019-06-06
  • SpringBoot+mail 輕松實(shí)現(xiàn)各類郵件自動(dòng)推送

    SpringBoot+mail 輕松實(shí)現(xiàn)各類郵件自動(dòng)推送

    在實(shí)際的項(xiàng)目開發(fā)過程中,經(jīng)常需要用到郵件通知功能,例如,通過郵箱注冊,郵箱找回密碼,郵箱推送報(bào)表等等,實(shí)際的應(yīng)用場景非常的多,今天通過這篇文章,我們一起來學(xué)習(xí)如何在 Spring Boot 中快速實(shí)現(xiàn)一個(gè)自動(dòng)發(fā)送郵件的功能
    2024-07-07
  • Spring 靜態(tài)變量/構(gòu)造函數(shù)注入失敗的解決方案

    Spring 靜態(tài)變量/構(gòu)造函數(shù)注入失敗的解決方案

    我們經(jīng)常會(huì)遇到一下問題:Spring對靜態(tài)變量的注入為空、在構(gòu)造函數(shù)中使用Spring容器中的Bean對象,得到的結(jié)果為空。不要擔(dān)心,本文將為大家介紹如何解決這些問題,跟隨小編來看看吧
    2021-11-11
  • Java EE項(xiàng)目中的異常處理總結(jié)(一篇不得不看的文章)

    Java EE項(xiàng)目中的異常處理總結(jié)(一篇不得不看的文章)

    什么是異常?運(yùn)行時(shí)發(fā)生的可被捕獲和處理的錯(cuò)誤。這篇文章主要介紹了Java EE項(xiàng)目中的異常處理總結(jié),有需要的可以了解一下。
    2016-11-11
  • 使用ServletUtil.write方法下載接口文件中文亂碼問題解決

    使用ServletUtil.write方法下載接口文件中文亂碼問題解決

    本文主要介紹了使用ServletUtil.write方法下載接口文件中文亂碼問題解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-05-05
  • java并發(fā)編程專題(五)----詳解(JUC)ReentrantLock

    java并發(fā)編程專題(五)----詳解(JUC)ReentrantLock

    這篇文章主要介紹了java(JUC)ReentrantLock的的相關(guān)資料,文中講解非常詳細(xì),實(shí)例代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07

最新評論