【Java Web】——配置檔案的格式之xml和properties的區分

韓夢甜發表於2016-09-18

【何為配置檔案】


         百度百科解釋:使用者配置檔案就是在使用者登入電腦時,或是使用者在使用軟體時,軟體系統為使用者所要載入所需環境的設定和檔案的集合。它包括所有使用者專用的配置設定,如程式專案、螢幕顏色、網路連線、印表機連線、滑鼠設定及視窗的大小和位置等。

        而在我們的專案中的配置檔案一般儲存的是專案啟動所需的環境設定,例如資料庫驅動,使用者名稱以及密碼等。而在我們做專案的時候,配置檔案一般為字尾名是.xml或者是.properties的檔案,當然兩者的共同點就是儲存專案啟動所需的環境設定啦!今天我們主要對比一下他們之間的不同。


【看外表】


1、sys-config.xml




2、sys-config.properties




【對比】從表面上看,.xml格式的要比.properties格式的結構要清晰一些,而.properties檔案要比.xml檔案結構要簡單一些。

【看內涵】


   1、從結構上來說:

       .xml檔案主要是樹形結構。
   .properties檔案主要是以key-value鍵值對的形式存在。

   2、從靈活程度上來說:

          .xml格式的檔案要比.properties格式的檔案更靈活一些
   .properties格式的檔案已鍵值對形式存在,主要就是賦值,而且只能賦值,不能夠進行其他的操作。
   .xml格式的檔案可以有多種操作方法,例如新增一個屬性,或者做一些其他的定義等。

   3、從使用便捷程度來說:  

        .properties格式的檔案要比.xml檔案配置起來簡單一些。
   配置.properties只需要簡單的getProperty(key)方法或者setProperty(key,value)方法就可以讀取或者寫入內容;
   配置.xml檔案的時候通常要檢視文件,因為配置比較繁瑣,花費時間長才可以配置完整。


  4、從應用程度上來說:

      .properties檔案比較適合於小型簡單的專案。
   .xml檔案適合大型複雜的專案,因為它比較靈活。

【程式碼實現:配置檔案的寫入與讀取】


1、讀寫sys-config.properties檔案


package testXMLDemo;

import java.io.*;
import java.util.Iterator;
import java.util.Properties;

/**
 * 讀寫Properties屬性檔案
 * Created by Cindy on 2016/9/16.
 */
public class propertiesDemo {

    public static void main(String [] args) throws IOException{
        //readProperties();
        writeProperties();
    }

    /**
     * 讀取properties屬性檔案
     */
    public static void readProperties()throws IOException{
        Properties prop=new Properties();
        FileInputStream inputFile=new FileInputStream("src/sys-config.properties");
        prop.load(inputFile);
        Iterator<String> it=prop.stringPropertyNames().iterator();
        while(it.hasNext()){
            String key=it.next();
            System.out.println(key+":"+prop.getProperty(key));
        }
        inputFile.close();
    }

    /**
     * 生成properties屬性檔案
     */
    public static void writeProperties()  {

        Properties prop=new Properties();
        try{
            //FileOutputStream oFile=new FileOutputStream("sys-config.properties",true);
            FileOutputStream oFile=new FileOutputStream(new File("src/sys-config.properties"),true);
            prop.setProperty("driver-name","oracle.jdbc.driver.OracleDriver");
            prop.setProperty("url","jdbcoracle:thin:@localhost:1521:ORCL");
            prop.setProperty("user-name","drp1");
            prop.setProperty("password","drp1");
            prop.store(oFile,"sys-config");
            oFile.close();
        } catch (FileNotFoundException e) {
            System.out.println(e);
        } catch (IOException e) {
            System.out.println(e);
        }
    }
}


2、讀寫sys-config.xml檔案(以dom4j方法為例)


package testXMLDemo;

import org.dom4j.*;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.List;

/**
 * DOM4J 讀寫XML
 * Created by Cindy on 2016/9/16.
 */
public class dom4JDemo {

    /**
     * 生成XML檔案
     */
    public static void   generateDocument(){
        Document document = DocumentHelper.createDocument();     //建立文件物件
        Element catalogElement=document.addElement("catalog");   //建立元素
        Element journalElement=catalogElement.addElement("journal");
        Element articleElement=journalElement.addElement("article");
        Element titleElement=articleElement.addElement("title");
        titleElement.setText("Java Configuration with XML Schema");  //設定元素內容值

        Element authorElement=articleElement.addElement("author");
        Element firstElement=authorElement.addElement("first");
        firstElement.addText("Han");
        Element lastElement=authorElement.addElement("last");
        lastElement.addText("Cindy");

        try{
            XMLWriter output =new XMLWriter(new FileWriter(new File("D:/catalog.xml")));  //建立輸出物件
            output.write(document);  //將文件物件寫入輸出物件中
            output.close();
        } catch (IOException e) {
           System.out.println(e.getMessage());
        }

    }

    /**
     * 讀取XML檔案
     * @throws DocumentException
     */
    public static void getXML() throws DocumentException {
        SAXReader reader=new SAXReader();
        Document document=reader.read(new File("src/sys-config.xml"));   //獲取文件物件
        Element node=document.getRootElement();          //獲得根節點
        Element dbinfoElement=node.element("db-info");    //獲得元素節點
        Element drivernameElement=dbinfoElement.element("driver-name");
        Element urlElement=dbinfoElement.element("url");
        Element usernameElement=dbinfoElement.element("user-name");
        Element passwordElement=dbinfoElement.element("password");

        String drivername=drivernameElement.getText();   //獲得節點內容
        String url=urlElement.getText();
        String username=usernameElement.getText();
        String password=passwordElement.getText();
        System.out.println(drivername);
        System.out.println(url);
        System.out.println(username);
        System.out.println(password);
    }
    public static void main(String [] args) throws DocumentException {
        //generateDocument();
        getXML();
    }
}

  通過程式碼我們可以看出.properties檔案的讀取寫入還是比較簡單的,而.xml檔案的讀取和寫入就相對於複雜一些,不過它也挺容易理解的。

【總結】


          在敲網上商城的時候好像用到過.properties檔案,那時候還很模糊,現在在做DRP,配置檔案用的是.xml格式的,而公司專案中的配置檔案是用的.properties格式的,就想著對比一下它們之間的不同。其實,配置檔案還有其他格式的,例如.ini格式的檔案,或者".cfg",".conf",".txt"等格式的檔案都可以作為配置檔案,只不過我接觸到的常見的是.xml和.properties檔案。




 

相關文章