久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Java Properties 類讀取和修改配置文件信息(轉(zhuǎn))

 芥納須彌 2015-12-16
在我們平時(shí)寫程序的時(shí)候,,有些參數(shù)是經(jīng)常改變的,而這種改變不是我們預(yù)知的,。比如說我們開發(fā)了一個(gè)操作數(shù)據(jù)庫的模塊,在開發(fā)的時(shí)候我們連接本地的數(shù)據(jù)庫那么 IP ,,數(shù)據(jù)庫名稱,,表名稱,數(shù)據(jù)庫主機(jī)等信息是我們本地的,,要使得這個(gè)操作數(shù)據(jù)的模塊具有通用性,,那么以上信息就不能寫死在程序里。通常我們的做法是用配置文件來解決,。各種語言都有自己所支持的配置文件類型,。比如 Python ,他支持 .ini 文件,。因?yàn)樗麅?nèi)部有一個(gè)nfigParser 類來支持 .ini 文件的讀寫,,根據(jù)該類提供的方法程序員可以自由的來操作 .ini 文件。而在 Java 中,, Java 支持的是 .properties 文件的讀寫,。 JDK 內(nèi)置的java.util.Properties 類為我們操作 .properties 文件提供了便利,。

使用J2SE API讀取Properties文件的六種方法

1。使用java.util.Properties類的load()方法
示例: InputStream in = lnew BufferedInputStream(new FileInputStream(name));
Properties p = new Properties();
p.load(in);

2,。使用java.util.ResourceBundle類的getBundle()方法
示例: ResourceBundle rb = ResourceBundle.getBundle(name, Locale.getDefault());

3,。使用java.util.PropertyResourceBundle類的構(gòu)造函數(shù)
示例: InputStream in = new BufferedInputStream(new FileInputStream(name));
ResourceBundle rb = new PropertyResourceBundle(in);

4。使用class變量的getResourceAsStream()方法
示例: InputStream in = JProperties.class.getResourceAsStream(name);
Properties p = new Properties();
p.load(in);

5,。使用class.getClassLoader()所得到的java.lang.ClassLoader的getResourceAsStream()方法
示例: InputStream in = JProperties.class.getClassLoader().getResourceAsStream(name);
Properties p = new Properties();
p.load(in);

6,。使用java.lang.ClassLoader類的getSystemResourceAsStream()靜態(tài)方法
示例: InputStream in = ClassLoader.getSystemResourceAsStream(name);
Properties p = new Properties();
p.load(in);

補(bǔ)充


Servlet中可以使用javax.servlet.ServletContext的getResourceAsStream()方法
示例:InputStream in = context.getResourceAsStream(path);
Properties p = new Properties();
p.load(in);


以下為服務(wù)器、數(shù)據(jù)庫信息

dbPort = localhost

databaseName = mydb

dbUserName = root

dbPassword = root

# 以下為數(shù)據(jù)庫表信息

dbTable = mytable

# 以下為服務(wù)器信息

ip = 192.168.0.9

······

在上面的文件中我們假設(shè)該文件名為: test.properties 文件,。其中 # 開始的一行為注釋信息,;在等號(hào)“ = ”左邊的我們稱之為 key ;等號(hào)“ = ”右邊的我們稱之為 value ,。(其實(shí)就是我們常說的鍵 - 值對(duì)) key 應(yīng)該是我們程序中的變量,。而 value是我們根據(jù)實(shí)際情況配置的。

以下是操作properties文件的工具類:

Java代碼 
  1. import java.io.BufferedInputStream;  
  2. import java.io.File;  
  3. import java.io.FileInputStream;  
  4. import java.io.FileOutputStream;  
  5. import java.io.IOException;  
  6. import java.io.InputStream;  
  7. import java.io.OutputStream;  
  8. import java.util.Properties;  
  9.   
  10. /** 
  11.  * Java讀寫修改Property文件 
  12.  * @author xiewanzhi 
  13.  * @date 2011-4-7上午09:19:03 
  14.  * @version 1.0 
  15.  */  
  16. public class PropertiesConfig {  
  17.   
  18.     /** 
  19.      * 根據(jù)KEY,,讀取文件對(duì)應(yīng)的值 
  20.      * @param filePath 文件路徑,,即文件所在包的路徑,例如:java/util/config.properties 
  21.      * @param key 鍵 
  22.      * @return key對(duì)應(yīng)的值 
  23.      */  
  24.     public static String readData(String filePath, String key) {  
  25.         //獲取絕對(duì)路徑  
  26.         filePath = PropertiesConfig.class.getResource("/" + filePath).toString();  
  27.         //截掉路徑的”file:“前綴  
  28.         filePath = filePath.substring(6);  
  29.         Properties props = new Properties();  
  30.         try {  
  31.             InputStream in = new BufferedInputStream(new FileInputStream(filePath));  
  32.             props.load(in);  
  33.             in.close();  
  34.             String value = props.getProperty(key);  
  35.             return value;  
  36.         } catch (Exception e) {  
  37.             e.printStackTrace();  
  38.             return null;  
  39.         }  
  40.     }  
  41.     /** 
  42.      * 修改或添加鍵值對(duì) 如果key存在,,修改, 反之,,添加。 
  43.      * @param filePath 文件路徑,,即文件所在包的路徑,,例如:java/util/config.properties 
  44.      * @param key 鍵 
  45.      * @param value 鍵對(duì)應(yīng)的值 
  46.      */  
  47.     public static void writeData(String filePath, String key, String value) {  
  48.         //獲取絕對(duì)路徑  
  49.         filePath = PropertiesConfig.class.getResource("/" + filePath).toString();  
  50.         //截掉路徑的”file:/“前綴  
  51.         filePath = filePath.substring(6);  
  52.         Properties prop = new Properties();  
  53.         try {  
  54.             File file = new File(filePath);  
  55.             if (!file.exists())  
  56.                 file.createNewFile();  
  57.             InputStream fis = new FileInputStream(file);  
  58.             prop.load(fis);  
  59.             //一定要在修改值之前關(guān)閉fis  
  60.             fis.close();  
  61.             OutputStream fos = new FileOutputStream(filePath);  
  62.             prop.setProperty(key, value);  
  63.             //保存,并加入注釋  
  64.             prop.store(fos, "Update '" + key + "' value");  
  65.             fos.close();  
  66.         } catch (IOException e) {  
  67.             System.err.println("Visit " + filePath + " for updating " + value + " value error");  
  68.         }  
  69.     }  
  70.       
  71.     public static void main(String[] args) {  
  72.         System.out.println(PropertiesConfig.readData("com/xiewanzhi/property/config.properties""port"));  
  73. //      PropertiesConfig.writeData("com/xiewanzhi/property/config.properties", "port", "12345");  
  74.     }  
  75. }  

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請遵守用戶 評(píng)論公約

    類似文章 更多