java之Properties配置文件用法解讀
什么是properties文件
1、java中的properties文件是一種配置文件,主要用于表達(dá)配置信息,文件類型為*.properties,格式為文本文件,這種文件以key=value格式存儲(chǔ)內(nèi)容。
2、Properties類繼承自Hashtable,是線程安全的,多個(gè)線程可以共享單個(gè)properties對(duì)象而無需進(jìn)行外部同步。
3、一般這個(gè)文件作為一些參數(shù)的存儲(chǔ),代碼就可以靈活一點(diǎn)。通俗點(diǎn)講就相當(dāng)于定義一個(gè)變量,在這個(gè)文件里面定義這些變量的值,在程序里面可以調(diào)用這些變量,好處就是,如果程序中的參數(shù)值需要變動(dòng),直接來改這個(gè).property文件就可以了,不用在去修改源代碼。
properties文件特點(diǎn)
1、鍵值對(duì)格式。
2、“ = ”等號(hào)后面,值前面,的空格,會(huì)自動(dòng)忽略掉。
3、值后面的空格,不會(huì)忽略。
4、“ = ”等號(hào)后面的雙引號(hào),不會(huì)忽略。
5、“ # ”號(hào)后面內(nèi)容,為注釋,忽略。
常用方法
1、getProperty(String key):用指定的鍵在此屬性列表中搜索屬性。也就是通過參數(shù)key,得到key所對(duì)應(yīng)的value。
2、load(InputStream inStream):從輸入流中讀取屬性列表(鍵值對(duì))。通過對(duì)指定的文件進(jìn)行裝載來獲取該文件中的所有鍵-值對(duì)。以供getProperty(String key)來搜索。
3、setProperty(String key,String value):調(diào)用Hashtable的方法put。他通過調(diào)用基類的put方法來設(shè)置鍵-值對(duì)。
4、store(OutputStream out,String comments)以適合使用load方法加載到Properties表中的格式,將此Properties表中的屬性列表(鍵和元素對(duì))寫入輸出流。與load方法相反,該方法將鍵-值對(duì)寫入到指定的文件中去。
5、clear():清除所有裝載的鍵-值對(duì)。該方法在基類中提供
Java 讀取 .properties 配置文件的幾種方式
a、基于ClassLoder(類加載器)讀取配置文件
注意:配置文件一定要放到當(dāng)前目錄下。
(目錄層次也可以從src下面的文件夾開始但不必包含src,且不必包含反斜杠開頭。)
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
public class demo01 {
public static void main(String[] args) {
Properties properties = new Properties();
//使用ClassLoader加載properties配置文件生成對(duì)應(yīng)的輸入流
InputStream in = demo01.class.getClassLoader().getResourceAsStream("config/config.properties");
try {
//使用properties對(duì)象加載輸入流
properties.load(in);
//根據(jù)key獲取對(duì)應(yīng)的value
String url = properties.getProperty("url");
System.out.println("url:"+url);
} catch (IOException e) {
e.printStackTrace();
}
}
}
b、基于 InputStream 讀取配置文件
注意:該方式的優(yōu)點(diǎn)在于可以讀取任意路徑下的配置文件.
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Properties;
public class Demo02 {
public static void main(String[] args) {
Properties properties = new Properties();
try {
//使用InputStream流 讀取配置文件
BufferedReader bufferedReader = new BufferedReader(new FileReader("C:/Users/szwb093/Desktop/config.properties"));
//使用properties對(duì)象加載輸入流
properties.load(bufferedReader);
//根據(jù)key獲取對(duì)應(yīng)的value
String url = properties.getProperty("url");
System.out.println("url:"+url);
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}
}
}
c、通過 java.util.ResourceBundle 類來讀取
這種方式比使用 Properties 要方便一些,
通過 ResourceBundle.getBundle( ) 靜態(tài)方法來獲?。≧esourceBundle是一個(gè)抽象類),這種方式來獲取properties屬性文件不需要加.properties后綴名,只需要文件名即可。
//config為屬性文件名,放在包c(diǎn)onfig下,如果放在src下(資源文件夾下),直接用config即可
ResourceBundle resource = ResourceBundle.getBundle("config/config");
String url = resource.getString("url");
System.out.println("url:"+url);
/*
Properties:用來讀取配置文件
*/
@Test
public void test2() throws Exception {
Properties pros = new Properties();
//此時(shí)的文件默認(rèn)在當(dāng)前module下
//讀取配置文件的方式一
// FileInputStream fis = new FileInputStream("jdbc1.properties");
// FileInputStream fis = new FileInputStream("src\\jdbc1.properties");
pros.load(fis);
//讀取配置文件方式二
//配置文件默認(rèn)識(shí)別為:當(dāng)前module的src下
ClassLoader classloder = ClassLoaderTest.class.getClassLoader();
InputStream is = classloder.getResourceAsStream("jdbc1.properties");
pros.load(is);
String user = pros.getProperty("user");
String password = pros.getProperty("password");
System.out.println("user =" + user + "password =" + password);
}
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java純代碼實(shí)現(xiàn)導(dǎo)出PDF功能
在項(xiàng)目開發(fā)中,產(chǎn)品的需求越來越奇葩啦,開始文件下載都是下載為excel的,做著做著需求竟然變了,要求能導(dǎo)出pdf,本文就來和大家分享一下Java實(shí)現(xiàn)導(dǎo)出PDF的常用方法吧2023-07-07
SpringMVC 攔截器不攔截靜態(tài)資源的三種處理方式方法
本篇文章主要介紹了SpringMVC 攔截器不攔截靜態(tài)資源的三種處理方式方法,詳細(xì)的介紹了三種方法,有興趣的可以了解一下。2017-01-01
Java異常處理Guava?Throwables類使用實(shí)例解析
這篇文章主要為大家介紹了Java異常處理神器Guava?Throwables類使用深入詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12
Java實(shí)現(xiàn)數(shù)字轉(zhuǎn)成英文的方法
這篇文章主要介紹了Java實(shí)現(xiàn)數(shù)字轉(zhuǎn)成英文的方法,涉及java數(shù)組與字符串的相關(guān)操作技巧,需要的朋友可以參考下2015-05-05
Springmvc conver實(shí)現(xiàn)原理及用法解析
這篇文章主要介紹了Springmvc conver實(shí)現(xiàn)原理及用法解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10

