属性文件对于程序的拓展提供了很大的方便,但是什么该怎么去读写,怎么样读写才会最优呢?这里我做了一个简单的测试,

  一般而言主要的有三种配置文件,*.ini,*.properties,*.xml,如果有兴趣可以另外尝试一下json格式的数据作为配置文件的优化.这里我只是作为一个简单的测试,生成大量的键值对,然后展示存储,读取,以及设置所有的键值对所需要的时间.下面直接上代码:

  

import java.io.*;
import java.util.*; import com.wk.mothod.MyTimeUtil; public class PropertiesTest {
static int maxlong=100000;
public static void main(String[] args) throws IOException {
// 同样先初始化Properties类
// 初始化之后在内存就出现一个保存key-value对的properties对象
MyTimeUtil mt=new MyTimeUtil();
Properties properties = new Properties();
// 之后设置三个属性,可以与HashMap的put方法做类比,同样是在操作key-value对
// 故意设置一个中文的value来说明*.ini,*.properties与*.xml之间对中文的支持
mt.start();
for(int i=0;i<maxlong;i++)
{
properties.setProperty("username"+i, "aaa"+"中文"+i); }
mt.endAndDisp("creat\t\t\t");
////////////////////////////////////store test ///////////////////
mt.start();
properties.store(new FileOutputStream("c:\\a.ini"), "中文");
mt.endAndDisp("store ini\t\t");
mt.start();
properties.store(new FileOutputStream("c:\\a.properties"), "中文");
mt.endAndDisp("store properties\t");
mt.start();
properties.storeToXML(new FileOutputStream("c:\\a.xml"), "中文");
mt.endAndDisp("store xml\t\t");
//////////////////////////////////read test////////////////////////
// 清空properties对象 mt.start();
properties = new Properties();
// 再把c:\a.ini里面存放的属性读取进来
properties.load(new FileInputStream("c:\\a.ini"));
for(int i=0;i<maxlong;i++)
{
//System.out.println(properties.getProperty("username"+i));
properties.getProperty("username"+i); }
mt.endAndDisp("read ini\t\t");
mt.start();
properties = new Properties();
// 再把c:\a.ini里面存放的属性读取进来
properties.load(new FileInputStream("c:\\a.properties"));
for(int i=0;i<maxlong;i++)
{
//System.out.println(properties.getProperty("username"+i));
properties.getProperty("username"+i); }
mt.endAndDisp("read properties\t\t");
mt.start();
properties = new Properties();
properties.loadFromXML(new FileInputStream("c:\\a.xml"));
for(int i=0;i<maxlong;i++)
{
// System.out.println(properties.getProperty("username"+i));
properties.getProperty("username"+i); }
mt.endAndDisp("read xml\t\t");
////////////////////////////////////////////set test////////////
mt.start();
properties = new Properties();
// 再把c:\a.ini里面存放的属性读取进来
properties.load(new FileInputStream("c:\\a.ini"));
for(int i=0;i<maxlong;i++)
{
//System.out.println(properties.getProperty("username"+i));
properties.setProperty("username"+i, "aaa"+"中文"+(maxlong-i)); }
mt.endAndDisp("set ini\t\t\t");
mt.start();
properties = new Properties();
// 再把c:\a.ini里面存放的属性读取进来
properties.load(new FileInputStream("c:\\a.properties"));
for(int i=0;i<maxlong;i++)
{
//System.out.println(properties.getProperty("username"+i));
properties.setProperty("username"+i, "aaa"+"中文"+(maxlong-i)); }
mt.endAndDisp("set properties\t\t");
mt.start();
properties = new Properties();
properties.loadFromXML(new FileInputStream("c:\\a.xml"));
for(int i=0;i<maxlong;i++)
{
// System.out.println(properties.getProperty("username"+i));
properties.setProperty("username"+i, "aaa"+"中文"+(maxlong-i)); }
mt.endAndDisp("set xml\t\t\t");
}
}

  类中使用的工具类可以在我的博客里面找到,就不多提,直接展示所得到的结果:

  

  从里面我们可以看到,生成10w属性对的时间是比较短的(数量太小时候时间太小了不好比较,所以设置的10w),对于存储时候,properties和ini的时间是差不多的,但是前者properties稍微快一点,xml的生成时间几乎是前者的两倍,对于读取时间来分析,properties和ini依旧比较接近,但是properties似乎略胜一筹,xml的时间是最长的了,最后从设置属性的时间来看,这次ini似乎第一,不过相差也并不是太大,xml还是在对最后面.

  对比一下文件的大小,结果如下如:

可以看到xml所占用的大小是比较大的.前面两个是差不多的.

  最后我们打开看看文件里面:

  从图中我们可以看到,xml所多的主要是每一个键值都有比ini和properties多的标志字段,因此大小稍微大一些,但是xml的一个优势是比较明显的,就是能够支持中文.

  最后做一个简单的小结下,ini和properties的效率是差不多的,xml是比较慢的,但是xml能够有中文是前面两者所不具备的.

  参考的文章:在此表示感谢.

【Java】配置文件概念,Java对配置文件的操作 - 编程记录,亲测有效 - CSDN博客
http://blog.csdn.net/yongh701/article/details/44123619

属性文件读写测试 PropertiesFileTest的更多相关文章

  1. 使用JAVA读写Properties属性文件

     使用JAVA读写Properties属性文件 Properties属性文件在JAVA应用程序中是经常可以看得见的,也是特别重要的一类文件.它用来配置应用程序的一些信息,不过这些信息一般都是比较少的数 ...

  2. python语言(二)列表、字典、集合、文件读写、关系测试

    1.列表 list   代码 s = '王宇建,苏红,邹存才...' # 列表 数字 list l = ['王宇建','苏红','邹存才'] # 一维数组 二维数组 三维数组 # 0 1 2 # 索引 ...

  3. 解决读写properties属性文件

    package com.kzkj.wx.utils; import java.io.BufferedReader; import java.io.File; import java.io.FileIn ...

  4. c语言文件读写操作总结

    C语言文件读写操作总结 C语言文件操作 一.标准文件的读写 1.文件的打开 fopen() 文件的打开操作表示将给用户指定的文件在内存分配一个FILE结构区,并将该结构的指针返回给用户程序,以后用户程 ...

  5. ActionScript 3.0入门:Hello World、文件读写、数据存储(SharedObject)、与JS互调

    近期项目中可能要用到Flash存取数据,并与JS互调,所以就看了一下ActionScript 3.0,现把学习结果分享一下,希望对新手有帮助. 目录 ActionScript 3.0简介 Hello ...

  6. Python之文件读写

    本节内容: I/O操作概述 文件读写实现原理与操作步骤 文件打开模式 Python文件操作步骤示例 Python文件读取相关方法 文件读写与字符编码 一.I/O操作概述 I/O在计算机中是指Input ...

  7. [转]ActionScript 3.0入门:Hello World、文件读写、数据存储(SharedObject)、与JS互调

    本文转自:http://www.cnblogs.com/artwl/p/3396330.html 近期项目中可能要用到Flash存取数据,并与JS互调,所以就看了一下ActionScript 3.0, ...

  8. 3,C语言文件读写

    这两天看到一个关于文件读写的题目,索性就把相关内容总结下. C语言文件读写,无非是几个读写函数的应用,fopen(),fread(),fwrite()等,下面简单介绍下. 一.fopen() 函数原型 ...

  9. 【转】Python之文件读写

    [转]Python之文件读写 本节内容: I/O操作概述 文件读写实现原理与操作步骤 文件打开模式 Python文件操作步骤示例 Python文件读取相关方法 文件读写与字符编码 一.I/O操作概述 ...

随机推荐

  1. tableau学习笔记—1

    第一部分 第一章 数据可视化 1.1 用数据讲故事 1.2 数据不只是数字 1.3 在数据中寻找什么(关系.模式.异常) 第二章 Tableau概述 2.1 Tableau概述 2.2 产品简介 第三 ...

  2. LeetCode Construct String from Binary Tree

    原题链接在这里:https://leetcode.com/problems/construct-string-from-binary-tree/#/description 题目: You need t ...

  3. UI及物体渲染顺序

    1.决定UI渲染在所有物体前,ZTest Always,Canvas中的RenderMode影响该值. 2.都是ZTest Always 时影响覆盖的因素: 父子及先后关系: 渲染队列: sortin ...

  4. C# 代码注释和Config文件中,特殊符号的书写方法。

    App.config: <?xml version="1.0" encoding="utf-8" ?> <configuration> ...

  5. BZOJ2648:SJY摆棋子

    浅谈\(K-D\) \(Tree\):https://www.cnblogs.com/AKMer/p/10387266.html 题目传送门:https://lydsy.com/JudgeOnline ...

  6. 机器学习:集成学习(Ada Boosting 和 Gradient Boosting)

    一.集成学习的思路 共 3 种思路: Bagging:独立的集成多个模型,每个模型有一定的差异,最终综合有差异的模型的结果,获得学习的最终的结果: Boosting(增强集成学习):集成多个模型,每个 ...

  7. 机器学习:衡量线性回归法的指标(MSE、RMSE、MAE、R Squared)

    一.MSE.RMSE.MAE 思路:测试数据集中的点,距离模型的平均距离越小,该模型越精确 # 注:使用平均距离,而不是所有测试样本的距离和,因为距离和受样本数量的影响 1)公式: MSE:均方误差 ...

  8. java代码输出质因数

    package com.badu; import java.util.Scanner; //分解质因数问题: //从键盘输一个数, //首先最小质因数为2 //n不能被2整除时, //n能被2整除时, ...

  9. [0day]jQuery Mobile XSS

    漏洞影响范围: 任何一个website使用了 jQuery Mobile 并且开放了重定向都有可能存在XSS,并且目前还没有相关补丁信息. 应用介绍: jQuery Mobile是jQuery 框架的 ...

  10. CentOS 配置XWIN/VNC

    Xwin服务器 CentOS上运维Xwin,在这之前需要理清一些关系: 一,  X window 包括xserver 和x client.linux下的xserver 主要有xorg.xfree86, ...