Properties的有序读写
时间:2019-09-20
本文章向大家介绍Properties的有序读写,主要包括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=山泉水
保存到文件的顺序也是如此
原文地址:https://www.cnblogs.com/baby123/p/11557689.html
- [周末课程]什么是“页面业务流程”分析思维导图?如何编写页面假JSON数据? &下一个前端组件“日历”
- Java并发学习之玩转线程池
- Java & PhantomJs 实现html输出图片
- 干货 | React Native实践之携程Moles框架
- Java并发学习之ThreadLocal使用及原理介绍
- ibeacon蓝牙技术简介
- Java并发学习之定时任务的几种玩法
- [视频直播]本周日先行者视频“React多级菜单
- Java并发学习之线程状态及Thread常用方法详解
- Java并发学习之四种线程创建方式的实现与对比
- Google protocol buffer简介
- Java反射的使用姿势一览
- [一对一讲什么] 之 测完了接口、搞好了目录,然后做啥?
- Java容器篇小结之List自问自答
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- PHP PDOStatement::debugDumpParams讲解
- PDO::prepare讲解
- sklearn的predict_proba使用说明
- 如何使用python记录室友的抖音在线时间
- 使用keras实现BiLSTM+CNN+CRF文字标记NER
- 图解MyBatis的SQL执行流程
- Keras: model实现固定部分layer,训练部分layer操作
- 在Keras中CNN联合LSTM进行分类实例
- DeepWalk:图网络与NLP的巧妙融合
- PHP扩展mcrypt实现的AES加密功能示例
- PHP PDOStatement::bindColumn讲解
- PHP PDOStatement::fetchAll讲解
- PHP PDOStatement::bindParam讲解
- PHP date()格式MySQL中插入datetime方法
- Python sklearn中的.fit与.predict的用法说明