日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

JavaXml教程(十)XML作为属性文件使用

發布時間:2023/12/31 asp.net 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaXml教程(十)XML作为属性文件使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我們通常會將Java應用的配置參數保存在屬性文件中,Java應用的屬性文件可以是一個正常的基于key-value對,以properties為擴展名的文件,也可以是XML文件.
在本案例中,將會向大家介紹如何通過Java程序輸出這兩種格式的屬性文件,并介紹如何從classpath中加載和使用這兩種屬性文件。
下面是案例程序代碼:
PropertyFilesUtil.java

package com.journaldev.util;import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.util.Properties; import java.util.Set;public class PropertyFilesUtil {public static void main(String[] args) throws IOException {String propertyFileName = "DB.properties";String xmlFileName = "DB.xml";writePropertyFile(propertyFileName, xmlFileName);readPropertyFile(propertyFileName, xmlFileName);readAllKeys(propertyFileName, xmlFileName);readPropertyFileFromClasspath(propertyFileName);}/*** read property file from classpath* @param propertyFileName* @throws IOException*/private static void readPropertyFileFromClasspath(String propertyFileName) throws IOException {Properties prop = new Properties();prop.load(PropertyFilesUtil.class.getClassLoader().getResourceAsStream(propertyFileName));System.out.println(propertyFileName +" loaded from Classpath::db.host = "+prop.getProperty("db.host"));System.out.println(propertyFileName +" loaded from Classpath::db.user = "+prop.getProperty("db.user"));System.out.println(propertyFileName +" loaded from Classpath::db.pwd = "+prop.getProperty("db.pwd"));System.out.println(propertyFileName +" loaded from Classpath::XYZ = "+prop.getProperty("XYZ"));}/*** read all the keys from the given property files* @param propertyFileName* @param xmlFileName* @throws IOException */private static void readAllKeys(String propertyFileName, String xmlFileName) throws IOException {System.out.println("Start of readAllKeys");Properties prop = new Properties();FileReader reader = new FileReader(propertyFileName);prop.load(reader);Set<Object> keys= prop.keySet();for(Object obj : keys){System.out.println(propertyFileName + ":: Key="+obj.toString()+"::value="+prop.getProperty(obj.toString()));}//loading xml file now, first clear existing propertiesprop.clear();InputStream is = new FileInputStream(xmlFileName);prop.loadFromXML(is);keys= prop.keySet();for(Object obj : keys){System.out.println(xmlFileName + ":: Key="+obj.toString()+"::value="+prop.getProperty(obj.toString()));}//Now free all the resourcesis.close();reader.close();System.out.println("End of readAllKeys");}/*** This method reads property files from file system* @param propertyFileName* @param xmlFileName* @throws IOException * @throws FileNotFoundException */private static void readPropertyFile(String propertyFileName, String xmlFileName) throws FileNotFoundException, IOException {System.out.println("Start of readPropertyFile");Properties prop = new Properties();FileReader reader = new FileReader(propertyFileName);prop.load(reader);System.out.println(propertyFileName +"::db.host = "+prop.getProperty("db.host"));System.out.println(propertyFileName +"::db.user = "+prop.getProperty("db.user"));System.out.println(propertyFileName +"::db.pwd = "+prop.getProperty("db.pwd"));System.out.println(propertyFileName +"::XYZ = "+prop.getProperty("XYZ"));//loading xml file now, first clear existing propertiesprop.clear();InputStream is = new FileInputStream(xmlFileName);prop.loadFromXML(is);System.out.println(xmlFileName +"::db.host = "+prop.getProperty("db.host"));System.out.println(xmlFileName +"::db.user = "+prop.getProperty("db.user"));System.out.println(xmlFileName +"::db.pwd = "+prop.getProperty("db.pwd"));System.out.println(xmlFileName +"::XYZ = "+prop.getProperty("XYZ"));//Now free all the resourcesis.close();reader.close();System.out.println("End of readPropertyFile");}/*** This method writes Property files into file system in property file* and xml format* @param fileName* @throws IOException*/private static void writePropertyFile(String propertyFileName, String xmlFileName) throws IOException {System.out.println("Start of writePropertyFile");Properties prop = new Properties();prop.setProperty("db.host", "localhost");prop.setProperty("db.user", "user");prop.setProperty("db.pwd", "password");prop.store(new FileWriter(propertyFileName), "DB Config file");System.out.println(propertyFileName + " written successfully");prop.storeToXML(new FileOutputStream(xmlFileName), "DB Config XML file");System.out.println(xmlFileName + " written successfully");System.out.println("End of writePropertyFile");}}

當運行這段代碼時,writePropertyFile 方法會在生成上述兩種格式的屬性文件,并將文件存儲在工程的根目錄下。
writePropertyFile 方法生成的兩種屬性文件內容:
DB.properties

#DB Config file #Fri Nov 16 11:16:37 PST 2012 db.user=user db.host=localhost db.pwd=password

DB.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd"> <properties> <comment>DB Config XML file</comment> <entry key="db.user">user</entry> <entry key="db.host">localhost</entry> <entry key="db.pwd">password</entry> </properties>

需要注意的是comment元素,我們在使用prop.storeToXML(new FileOutputStream(xmlFileName), "DB Config XML file");這段代碼時第二個參數傳入的是注釋內容,如果傳入null,生成的xml屬性文件將沒有comment元素。
控制臺輸出內容如下:

Start of writePropertyFile DB.properties written successfully DB.xml written successfully End of writePropertyFile Start of readPropertyFile DB.properties::db.host = localhost DB.properties::db.user = user DB.properties::db.pwd = password DB.properties::XYZ = null DB.xml::db.host = localhost DB.xml::db.user = user DB.xml::db.pwd = password DB.xml::XYZ = null End of readPropertyFile Start of readAllKeys DB.properties:: Key=db.user::value=user DB.properties:: Key=db.host::value=localhost DB.properties:: Key=db.pwd::value=password DB.xml:: Key=db.user::value=user DB.xml:: Key=db.host::value=localhost DB.xml:: Key=db.pwd::value=password End of readAllKeys Exception in thread "main" java.lang.NullPointerExceptionat java.util.Properties$LineReader.readLine(Properties.java:434)at java.util.Properties.load0(Properties.java:353)at java.util.Properties.load(Properties.java:341)at com.journaldev.util.PropertyFilesUtil.readPropertyFileFromClasspath(PropertyFilesUtil.java:31)at com.journaldev.util.PropertyFilesUtil.main(PropertyFilesUtil.java:21)

這里報了空指針異常,原因是生成的文件保存在工程的根目錄下面,而讀取時是從classpath下讀取,將上面生成的兩個屬性文件拷貝到src下再次運行程序即可。

轉載于:https://www.cnblogs.com/lanzhi/p/6468333.html

總結

以上是生活随笔為你收集整理的JavaXml教程(十)XML作为属性文件使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。