码迷,mamicode.com
首页 > 编程语言 > 详细

Java学习-023-Properties 类 XML 配置文件读取及写入源代码

时间:2015-06-29 23:39:37      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:

之前的几篇 Properties 文章已经讲述过了 Java 配置文件类 Properties 的基本用法,查看 JDK 的帮助文档时,也可看到在 Properties 类中还有两个方法 loadFromXML(InputStream) 和 storeToXml(OutputStream, String, String),由方法名中的 xml 不难确定这两个方法分别是读取/写入数据到 xml 文件。JDK 文档部分如下所示:

技术分享

因而此文将通过源码实例演示 Properties 类是如何将数据写入 xml 文件中,及如何读取数据的。当然,写入 xml 的数据需要符合一定的标准,即以 键值对 的形式存在;同时,生成的 xml 文件的格式可参考上图中的 properties.dtd。

 

话不多言,小二上码。。。敬请各位小主参阅。若有不足之处,敬请大神指正,不胜感激!

创建 xml 文件源码如下所示:

技术分享
 1     /**
 2      * @function Write data to xml file by Properties
 3      * 
 4      * @author Aaron.ffp
 5      * @version V1.0.0: autoUISelenium main.java.aaron.java.tools FileUtils.java propertiesWriteXml, 2014-11-20 16:47:47 Exp $
 6      * 
 7      * @param filename : full path
 8      * @param author   : creator
 9      * @param configs  : file contents
10      * @return boolean
11      */
12     public boolean propertiesWriteXml(String filename, String author, ArrayList<String[]> configs){
13         Properties properties = new Properties();
14         boolean success = false;
15         
16         /* 参数校验: 参数非法时, 抛出参数非法异常 */
17         if (filename == null || "".equals(filename) || author == null || "".equals(author) || configs.isEmpty()) {
18             throw new IllegalArgumentException();
19         }
20         
21         try {
22             OutputStream os = new FileOutputStream(filename);
23             
24             for (String[] row : configs) {
25                 properties.setProperty(row[0].trim(), row[1].trim());
26             }
27             
28             properties.storeToXML(os, "author:" + author, "UTF-8");
29             os.close();
30             
31             success = true;
32         } catch (IOException ioe) {
33             this.message = "文件 {" + filename + "} 写入失败!";
34             this.logger.error(this.message, ioe);
35         }
36         
37         return success;
38     }
Properties 写入 Java xml 配置文件源码

读取 xml 文件源码如下所示:

技术分享
 1     /**
 2      * @function Read xml file by Properties
 3      * 
 4      * @author Aaron.ffp
 5      * @version V1.0.0: autoUISelenium main.java.aaron.java.tools FileUtils.java xmlReadByProperties, 2014-11-20 16:46:53 Exp $
 6      * 
 7      * @param filename : 文件全路径
 8      * 
 9      * @return Properties
10      */
11     public Properties propertiesReadXml(String filename){
12         Properties properties = new Properties();
13 
14         /* 参数校验: 为null或空字符串时, 抛出参数非法异常 */
15         if (filename == null || "".equals(filename) || !this.assertFileType(filename, "XML")) {
16             throw new IllegalArgumentException();
17         }
18         
19         try {
20             /* 获取文件数据流 */
21             InputStream is = new FileInputStream(filename);
22             /* 加载文件数据流 */
23             properties.loadFromXML(is);
24             /* 关闭文件数据流 */
25             is.close();
26         } catch (IOException ioe) {
27             properties = null;
28             
29             this.message = "文件 {" + filename + "} 读取失败!";
30             this.logger.error(this.message, ioe);
31         }
32         
33         return properties;
34     }
Properties 读取 Java xml 配置文件源码

测试源码如下所示:

技术分享
 1     /**
 2      * Test : Write/Read data to/from XML file
 3      * 
 4      * @author Aaron.ffp
 5      * @version V1.0.0: autoUISelenium test.java.aaron.java.tools FileUtilsTest.java test_propertiesWriteXml, 2014-11-20 16:53:53 Exp $
 6      *
 7      */
 8     public void test_propertiesWriteReadXml(){
 9         this.message = "\n\n\nTEST:FileUtils.propertiesWriteXml(String filename, String author, ArrayList<String[]> configs)" + 
10                            "\n      FileUtils.propertiesReadXml(String filename)";
11         this.logger.debug(this.message);
12         
13         this.fu = new FileUtils();
14         String filename = this.constantslist.PROJECTHOME + this.constantslist.FILESEPARATOR + 
15                           "testng-temp" + this.constantslist.FILESEPARATOR + "test_propertiesWriteReadXml.xml";
16         
17         ArrayList<String[]> configs = new ArrayList<String[]>();
18         
19         String author = "Aaron.ffp";
20         
21         for (int i = 0; i < 10; i++) {
22             String[] row = new String[2];
23             
24             row[0] = i + "";
25             row[1] = "The row number is " + (i + 1);
26             
27             configs.add(i, row);
28         }
29         
30         if (this.fu.propertiesWriteXml(filename, author, configs)) {
31             Assert.assertEquals(this.fu.propertiesGetValue(this.fu.propertiesReadXml(filename), "2"), "The row number is 3", "Test case failed.");
32         } else {
33             this.message = "Test case failed, please check the data file : " + filename; 
34             Assert.fail(this.message);
35         };
36     }
Properties 读取 Java xml 配置文件测试源码

程序执行结果如下所示:

技术分享

生成的 xml 文件内容如下所示:

技术分享

至此, Java学习-023-Properties 类创建 XML 文件 顺利完结,希望此文能够给初学 Java 的您一份参考。

最后,非常感谢亲的驻足,希望此文能对亲有所帮助。热烈欢迎亲一起探讨,共同进步。非常感谢! ^_^

Java学习-023-Properties 类 XML 配置文件读取及写入源代码

标签:

原文地址:http://www.cnblogs.com/fengpingfan/p/4608922.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!