关闭

保持顺序的 Java Properties 类

标签: Properties
280人阅读 评论(0) 收藏 举报
分类:
Java 的 Properties 加载属性文件后是无法保证输出的顺序与文件中一致的,因为 Properties 是继承自 Hashtable 的, key/value 都是直接存在 Hashtable 中的,而 Hashtable 是不保证进出顺序的。

文章中已经给提供了代码,思路是继承自 Properties,覆盖原来的 put/keys,keySet,stringPropertyNames 即可,其中用一个 LinkedHashSet 来保存它的所有 key。完整代码如下:

[java] view plain copy
  1. <span style="font-family:Comic Sans MS;">package com.mstar.investmeplugin;  
  2.    
  3. import java.util.Collections;  
  4. import java.util.Enumeration;  
  5. import java.util.LinkedHashSet;  
  6. import java.util.Properties;  
  7. import java.util.Set;  
  8.    
  9. /** 
  10.  * OrderedProperties 
  11.  * @author liii 
  12.  * @date 2015-07-10 
  13.  */  
  14. public class OrderedProperties extends Properties {  
  15.    
  16.     private static final long serialVersionUID = -4627607243846121965L;  
  17.        
  18.     private final LinkedHashSet<Object> keys = new LinkedHashSet<Object>();  
  19.    
  20.     public Enumeration<Object> keys() {  
  21.         return Collections.<Object> enumeration(keys);  
  22.     }  
  23.    
  24.     public Object put(Object key, Object value) {  
  25.         keys.add(key);  
  26.         return super.put(key, value);  
  27.     }  
  28.    
  29.     public Set<Object> keySet() {  
  30.         return keys;  
  31.     }  
  32.    
  33.     public Set<String> stringPropertyNames() {  
  34.         Set<String> set = new LinkedHashSet<String>();  
  35.    
  36.         for (Object key : this.keys) {  
  37.             set.add((String) key);  
  38.         }  
  39.    
  40.         return set;  
  41.     }  
  42. }</span>  

调用方法


[java] view plain copy
  1. <span style="font-family:Comic Sans MS;">Properties props = new OrderedProperties();  
  2. props.load(fileInputStream);  
  3.    
  4. //通过 keys(), keySet() 或 stringPropertyNames 来遍历都能保证按文件中的顺序输出</span>  
0
0
查看评论

java 读取,修改properties文件,不改变文件内容顺序

FileInputStream input1 = new FileInputStream("/jdbc.properties");//读取代码 SafeProperties safeProp1 = new SafeProperties(); saf...
  • xiaosemei
  • xiaosemei
  • 2017-08-17 16:28
  • 733

保持顺序的 Java Properties 类

文章来源:http://gflei.iteye.com/blog/1851875 Java 的 Properties 加载属性文件后是无法保证输出的顺序与文件中一致的,因为 Properties 是继承自 Hashtable 的, key/value 都是直接存在 Hashtabl...
  • buster2014
  • buster2014
  • 2016-02-22 15:02
  • 893

JAVA顺序读取Properties文件

import java.util.Collections; import java.util.Enumeration; import java.util.LinkedHashSet; import java.util.Properties; import java.util.Set; /** * ...
  • socoldinxian
  • socoldinxian
  • 2014-05-20 08:40
  • 2402

读配置文件可以保持顺序的 Java Properties 类

序 前几天,公司项目中有一个需求是读取配置文件的,而且最好能够保证加载到内存中的顺序能够和配置文件中的顺序一致,但是,如果使用 jdk 中提供的 Properties 类的话,读取配置文件后,加载到内存中的顺序是随机的,不能保证和原文件的顺序一致,因此,jdk 提供的 Properties 是不...
  • happylee6688
  • happylee6688
  • 2015-07-15 15:42
  • 7538

实现对properties文件的顺序读出,并顺序写入。

Java 的 Properties 加载属性文件后是无法保证输出的顺序与文件中一致的,因为 Properties 是继承自 Hashtable 的, key/value 都是直接存在 Hashtable 中的,而 Hashtable 是不保证进出顺序的。 总有时候会有关心顺序一致的需求,恰如有 o...
  • yuanfen860913
  • yuanfen860913
  • 2013-10-12 16:17
  • 1014

java编程中Properties类的具体作用和使用

如果不熟悉 java.util.Properties类,那么现在告诉您它是用来在一个文件中存储键-值对的,其中键和值是用等号分隔的。(如清单 1 所示)。最近更新的java.util.Properties 类现在提供了一种为程序装载和存储设置的更容易的方法: loadFromXML(Inpu...
  • xyw591238
  • xyw591238
  • 2016-07-13 17:59
  • 2895

java.util.Properties类,保存时保留注释及格式不变

Properties调用store方法保存时,会把文件中原来的注释给冲掉,而且顺序会发生错乱,网上查找解决方案时,有人遇到了相同的问题,并给出了解决方案。 如下: 改进Properties,实现了SafeProperties.java import java.io.BufferedRea...
  • benbenxiongyuan
  • benbenxiongyuan
  • 2016-11-02 11:18
  • 2590

Java属性类:Properties的常用方法

Properties类本身是Hashtable类的子类,也是按照key-value的形式存放数据的. 设置和取得属性: public class PropertiesDemo01{ public static void main(String args[]){ Properties pro =...
  • pengkv
  • pengkv
  • 2014-07-12 15:39
  • 1675

java中变量加载顺序再学习

先看一段代码: public class HelloB extends HelloA{ public HelloB(){ System.out.println("HelloB"); } { System.out.println("I am B c...
  • anLA_
  • anLA_
  • 2017-03-12 13:03
  • 725

properties文件的存取与Map键值对排序【按照value进行排序】

文章来源:http://dracularking.iteye.com/blog/550388 Java代码   import java.io.FileInputStream;   import java...
  • buster2014
  • buster2014
  • 2016-02-22 14:59
  • 757
    个人资料
    • 访问:216450次
    • 积分:5519
    • 等级:
    • 排名:第5738名
    • 原创:326篇
    • 转载:192篇
    • 译文:1篇
    • 评论:15条
    文章分类