Properties的有序读写
使用java.util.Properties提供的类,读取properties文件的时候,读出来的是乱序的
如下边的情况
- import java.io.*;
- import java.util.Arrays;
- import java.util.Enumeration;
- import java.util.List;
- import java.util.Properties;
- public class PropertyDemo {
- public static List<String> old = Arrays.asList("自来水","纯净水", "矿泉水","山泉水" );
- public static void main(String[] args) {
- initType();
- }
- public static void initType() {
- String path = System.getProperty("user.dir").replaceAll("\\\\", "/");
- path = path + "/waterType.properties";
- File file = new File(path);
- Properties properties = new Properties();
- if (!file.exists()) {
- try {
- FileOutputStream oFile = new FileOutputStream(path, true);
- int i = 0;
- int len = old.size();
- for (; i < len; i++) {
- properties.setProperty(String.valueOf(i + 1), old.get(i));
- }
- properties.store(oFile, "");
- oFile.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- try {
- InputStream in = new BufferedInputStream(new FileInputStream(path));
- properties.load(in);
- in.close();
- } catch (IOException ex) {
- ex.printStackTrace();
- }
- //遍历
- Enumeration<?> e= properties.propertyNames();
- while (e.hasMoreElements()){
- String key = (String) e.nextElement();
- String value = properties.getProperty(key);
- System.out.println(key + "=" + value);
- }
- }
- }
输出
- 4=山泉水
- 3=矿泉水
- 2=纯净水
- 1=自来水
保存到文件的顺序也是如此
那如果想是有序的,怎么办呢?
自定义一个Properties 类
- import java.util.*;
- public class OrderedProperties extends Properties {
- private final LinkedHashSet<Object> keys = new LinkedHashSet<Object>();
- public Enumeration<Object> keys() {
- return Collections.<Object>enumeration(keys);
- }
- public Object put(Object key, Object value) {
- keys.add(key);
- return super.put(key, value);
- }
- public Set<Object> keySet() {
- return keys;
- }
- public Set<String> stringPropertyNames() {
- Set<String> set = new LinkedHashSet<String>();
- for (Object key : this.keys) {
- set.add((String) key);
- }
- return set;
- }
- }
使用
- import java.io.*;
- import java.util.*;
- public class PropertyDemo {
- public static List<String> old = Arrays.asList("自来水","纯净水", "矿泉水","山泉水" );
- public static void main(String[] args) {
- initType();
- }
- public static void initType() {
- String path = System.getProperty("user.dir").replaceAll("\\\\", "/");
- path = path + "/waterType.properties";
- File file = new File(path);
- Properties properties = new OrderedProperties();
- if (!file.exists()) {
- try {
- FileOutputStream oFile = new FileOutputStream(path, true);
- int i = 0;
- int len = old.size();
- for (; i < len; i++) {
- properties.setProperty(String.valueOf(i + 1), old.get(i));
- }
- properties.store(oFile, "");
- oFile.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- try {
- InputStream in = new BufferedInputStream(new FileInputStream(path));
- properties.load(in);
- in.close();
- } catch (IOException ex) {
- ex.printStackTrace();
- }
- //遍历
- Set<String> e = properties.stringPropertyNames();
- for (String one : e) {
- String key = one;
- String value = properties.getProperty(one);
- System.out.println(key + "=" + value);
- }
- }
- }
输出
- 1=自来水
- 2=纯净水
- 3=矿泉水
- 4=山泉水
保存到文件的顺序也是如此
多少迷茫,曾经在幽幽暗暗、反反复复中追问,才知道平平淡淡从从容容才是真。再回首恍然如梦,再回首我心依旧
Properties的有序读写的更多相关文章
- Java程序员的日常—— Properties文件的读写
在日常的Java程序开发中,Properties文件的读写是很常用的.经常有开发系统通过properties文件来当做配置文件,方便用户对系统参数进行调整. 那么本片就来简单的介绍下,如何使用Prop ...
- Android 对 properties文件的读写操作
-. 放在res中的properties文件的读取,例如对放在assets目录中的setting.properties的读取:PS:之所以这里只是有读取操作,而没有写的操作,是因为我发现不能对res下 ...
- K:java中properties文件的读写
Properties类与.properties文件: Properties类继承自Hashtable类并且实现了Map接口,也是使用一种键值对的形式来保存属性集的类,不过Properties有特殊 ...
- 实现对properties文件的有序读写
最近遇到一项需求,要求把properties文件中的内容读取出来供用户修改,修改完后需要再重新保存到properties文件中.很简单的需求吧,可问题是Properties是继承自HashTable的 ...
- JSP+Java+properties+FileInputStream文件读写,JSP页面读取properties文件
String realPath = request.getRealPath("WEB-INF/classes/com/properties/devicetype.properties&quo ...
- JAVA Properties配置文件的读写
通常我们就会看到一个配置文件,比如:jdbc.properties,它是以“.properties”格式结尾的.在java中,这种文件的内容以键值对<key,value>存储,通常以“=” ...
- Java读写资源文件类Properties
Java中读写资源文件最重要的类是Properties 1) 资源文件要求如下: 1.properties文件是一个文本文件 2.properties文件的语法有两种,一种是注释,一种属性配置. 注 ...
- Properties读写资源文件
Java中读写资源文件最重要的类是Properties,功能大致如下: 1. 读写Properties文件 2. 读写XML文件 3. 不仅可以读写上述两类文件,还可以读写其它格式文件如txt等,只要 ...
- Java读写配置文件——Properties类的简要使用笔记
任何编程语言都有自己的读写配置文件的方法和格式,Java也不例外. 在Java编程语言中读写资源文件最重要的类是Properties,功能大致如下: 1. 读写Properties文件 2. 读写XM ...
随机推荐
- JAVA接口与类的区别
抽象类:一个类中有抽象方法,这个类就变成了抽象类.抽象类中class的前面必须有abstract修饰符.抽象类中可以有普通方法,也可以有抽象方法,而抽象方法的个数可以是0个,也可以是多个.子类继承父类 ...
- JavaScript原始类型转换和进制转换
1.JavaScript转换包括:强制转换和基本转换 如: var str = 'A',num=10,nu=null,t=true,und=undefined,x; //注意:定义的x未被初始化:默 ...
- 【JZOJ6233】【20190627】心的旋律
题目 你需要构造一个\(n\)个点的二分图 定义\(F(A)\)表示左部点集\(A\)能够到达的右部中的点 使得满足 $ F(A) \lt |A| $ 的集合恰好有 $ k $ 个 \(1 \le n ...
- hbase基础知识一
1. hbase是什么 漫画学习hbase----最易懂的Hbase架构原理解析 http://developer.51cto.com/art/201904/595698.htm 1.1 hbase的 ...
- BZOJ2151/洛谷P1792 题解
若想要深入学习反悔贪心,传送门. Description: 有 \(n\) 个位置,每个位置有一个价值.有 \(m\) 个树苗,将这些树苗种在这些位置上,相邻位置不能都种.求可以得到的最大值或无解信息 ...
- AntDesign-React与VUE有点不一样,第一篇深入了解React的概念之一:JSX
AntDesign-React与VUE有点不一样,第一篇深入了解React的概念之一:JSX 一.什么是JSX 使用JSX声明一个变量(REACT当中的元素): const element =< ...
- Mean Average Precision(mAP),Precision,Recall,Accuracy,F1_score,PR曲线、ROC曲线,AUC值,决定系数R^2 的含义与计算
背景 之前在研究Object Detection的时候,只是知道Precision这个指标,但是mAP(mean Average Precision)具体是如何计算的,暂时还不知道.最近做OD的任 ...
- 【BigData】Java基础_循环
1.for循环 语法: for (初始表达式;布尔表达式;步进) { 循环体: } 实例: package cn.test.logan.day02; import java.util.Scanner; ...
- 设计模式概要 & 六原则一法则
参考文章 http://blog.csdn.net/sinat_26342009/article/details/46419873 继承vs组合:http://www.cnblogs.com/feic ...
- python 五星红旗
import turtle turtle.setup(600,400,0,0) turtle.bgcolor("red") turtle.fillcolor("yello ...