日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

properties 配置 java_Java 操作Properties配置文件详解

發(fā)布時(shí)間:2024/9/19 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 properties 配置 java_Java 操作Properties配置文件详解 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1 簡(jiǎn)介:

JDK提供的java.util.Properties類(lèi)繼承自Hashtable類(lèi)并且實(shí)現(xiàn)了Map接口,是使用一種鍵值對(duì)的形式來(lái)保存屬性集,其中鍵和值都是字符串類(lèi)型。

java.util.Properties類(lèi)提供了getProperty()和setProperty()方法來(lái)操作屬性文件,同時(shí)使用load()方法和store()方法加載和保存Properties配置文件。

java.util.ResourceBundle類(lèi)也提供了讀取Properties配置文件的方法,ResourceBundle是一個(gè)抽象類(lèi)。

2.Properties中的主要方法

1)load(InputStream inStream):該方法可以從.properties屬性文件對(duì)應(yīng)的文件數(shù)入流中,加載屬性列表到Properties類(lèi)對(duì)象中。load有兩個(gè)方法的重載:load(InputStream inStream)、load(Reader reader),可根據(jù)不同的方式來(lái)加載屬性文件。

InputStream inStream = TestProperties.class.getClassLoader().getResourceAsStream("demo.properties");

//通過(guò)當(dāng)前類(lèi)加載器的getResourceAsStream方法獲取

//TestProperties當(dāng)前類(lèi)名;TestProperties.class.取得當(dāng)前對(duì)象所屬的Class對(duì)象; getClassLoader():取得該Class對(duì)象的類(lèi)裝載器

InputStream in = ClassLoader.getSystemResourceAsStream("filePath");

InputStream inStream = new FileInputStream(new File("filePath")); //從文件獲取

InputStream in = context.getResourceAsStream("filePath"); //在servlet中,可以通過(guò)context來(lái)獲取InputStream

InputStream inStream = new URL("path").openStream();            //通過(guò)URL來(lái)獲取

讀取方法如下:

Properties pro = new Properties();                //實(shí)例化一個(gè)Properties對(duì)象

InputStream inStream = new FileInputStream("demo.properties");    //獲取屬性文件的文件輸入流

pro.load(nStream);

inStream.close();

2)store(OutputStream out,String comments):這個(gè)方法將Properties類(lèi)對(duì)象的屬性列表寫(xiě)入.properties配置文件。如下:

FileOutputStream outStream = new FileOutputStream("demo.properties");

pro.store(outStream,"Comment");

outStream.close();

3 ResourceBundle中的主要方法

通過(guò)ResourceBundle.getBundle()靜態(tài)方法來(lái)獲取,此方法獲取properties屬性文件不需要加.properties后綴名。也可以從InputStream中獲取ResourceBundle對(duì)象。

ResourceBundle resource = ResourceBundle.getBundle("com/xiang/demo");//emo為屬性文件名,放在包c(diǎn)om.xiang下,如果是放在src下,直接用test即可

ResourceBundle resource1 = new PropertyResourceBundle(inStream);

String value = resource.getString("name");

在使用中遇到的問(wèn)題可能是配置文件的路徑,當(dāng)配置文件不在當(dāng)前類(lèi)所在的包下,則需要使用包名限定;若屬性文件在src根目錄下,則直接使用demo.properties或demo即可。

4 Properties操作實(shí)例

import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.util.HashMap;

import java.util.Iterator;

import java.util.Map;

import java.util.Properties;

/**

* Java中Preperties配置文件工具類(lèi)

* @author shu

*

*/

public class PropsUtil {

private String path = "";

private Properties properties ;

/**

* 默認(rèn)構(gòu)造函數(shù)

*/

public PropsUtil() {}

/**

* 構(gòu)造函數(shù)

* @param path 傳入Properties地址值

*/

public PropsUtil(String path) {

this.path = path;

}

/**

* 加載properties文件

* @return 返回讀取到的properties對(duì)象

*/

public Properties loadProps(){

InputStream inStream = ClassLoader.getSystemResourceAsStream(path);

try {

if(inStream==null)

throw new FileNotFoundException(path + " file is not found");

properties = new Properties();

properties.load(inStream);

inStream.close();

} catch (IOException e) {

e.printStackTrace();

}

return properties;

}

/**

* 將配置寫(xiě)入到文件

*/

public void writeFile(){

// 獲取文件輸出流

try {

FileOutputStream outputStream = new FileOutputStream( new File(ClassLoader.getSystemResource(path).toURI()));

properties.store(outputStream, null);

outputStream.close();

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

/**

* 通過(guò)關(guān)鍵字獲取值

* @param key

* @return 返回對(duì)應(yīng)的字符串,如果無(wú),返回null

*/

public String getValueByKey(String key) {

if(properties==null)

properties = loadProps();

String val = properties.getProperty(key.trim());

return val;

}

/**

* 通過(guò)關(guān)鍵字獲取值

* @param key 需要獲取的關(guān)鍵字

* @param defaultValue 若找不到對(duì)應(yīng)的關(guān)鍵字時(shí)返回的值

* @return 返回找到的字符串

*/

public String getValueByKey(String key,String defaultValue){

if(properties==null)

properties = loadProps();

return properties.getProperty(key, defaultValue);

}

/**

* 獲取Properties所有的值

* @return 返回Properties的鍵值對(duì)

*/

public Map getAllProperties() {

if(properties==null)

properties = loadProps();

Map map = new HashMap();

// 獲取所有的鍵值

Iterator it=properties.stringPropertyNames().iterator();

while(it.hasNext()){

String key=it.next();

map.put(key, properties.getProperty(key));

}

/*Enumeration enumeration = properties.propertyNames();

while (enumeration.hasMoreElements()) {

String key = (String) enumeration.nextElement();

String value = getValueByKey(key);

map.put(key, value);

}*/

return map;

}

/**

* 往Properties寫(xiě)入新的鍵值且保存

* @param key 對(duì)應(yīng)的鍵

* @param value 對(duì)應(yīng)的值

*/

public void addProperties(String key, String value) {

if(properties==null)

properties = loadProps();

properties.setProperty(key, value);

try {

writeFile();

} catch (Exception e) {

throw new RuntimeException("write fail");

}

}

/**

* 更新配置文件

* @param key 對(duì)應(yīng)的鍵

* @param value 對(duì)應(yīng)的值

*/

public void update(String key,String value){

if(properties==null)

properties = loadProps();

if(properties.containsKey(key))

properties.replace(key, value);

try {

writeFile();

} catch (Exception e) {

throw new RuntimeException("write fail");

}

}

/**

* 刪除某一鍵值對(duì)

* @param key

*/

public void deleteByKey(String key){

if(properties==null)

properties = loadProps();

if(!properties.containsKey(key))

throw new RuntimeException("not such key");

properties.remove(key);

try {

writeFile();

} catch (Exception e) {

throw new RuntimeException("write fail");

}

}

/**

* 設(shè)置path值

* @param path

*/

public void setPath(String path){

this.path = path;

}

}

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

總結(jié)

以上是生活随笔為你收集整理的properties 配置 java_Java 操作Properties配置文件详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。