Properties IO持久化
Properties IO持久化
Properties类表示一组持久的属性。 Properties可以保存到流中或从流中加载。 属性列表中的每个键及其对应的值都是一个字符串。
方法:
String getProperty(String key)
使用此属性列表中指定的键搜索属性。
String getProperty(String key, String defaultValue)
使用此属性列表中指定的键搜索属性。
void list(PrintStream out)
将此属性列表打印到指定的输出流。
void list(PrintWriter out)
将此属性列表打印到指定的输出流。
void load(InputStream inStream)
从输入字节流读取属性列表(键和元素对)。
void load(Reader reader)
以简单的线性格式从输入字符流读取属性列表(关键字和元素对)。
void loadFromXML(InputStream in)
将指定输入流中的XML文档表示的所有属性加载到此属性表中。
Enumeration<?> propertyNames()
返回此属性列表中所有键的枚举,包括默认属性列表中的不同键,如果尚未从主属性列表中找到相同名称的键。
Object setProperty(String key, String value)
如同 Hashtable方法 put 。
void store(OutputStream out, String comments)
将此属性列表(键和元素对)写入此 Properties表中,以适合于使用 load(InputStream)方法加载到 Properties表中的格式输出流。--comments就是文件的注释且只能为英文注释因为其为Unicode编码
void store(Writer writer, String comments)
将此属性列表(键和元素对)写入此 Properties表中,以适合使用 load(Reader)方法的格式输出到输出字符流。
Set stringPropertyNames()
返回此属性列表中的一组键,其中键及其对应的值为字符串,包括默认属性列表中的不同键,如果尚未从主属性列表中找到相同名称的键。
将数据持久化-- store()
void store(OutputStream out, String comments)
将此属性列表(键和元素对)写入此 Properties表中,以适合于使用 load(InputStream)方法加载到 Properties表中的格式输出流。--comments就是文件的注释且只能为英文注释因为其为Unicode编码
void store(Writer writer, String comments)
将此属性列表(键和元素对)写入此 Properties表中,以适合使用 load(Reader)方法的格式输出到输出字符流。
使用步骤
1.创建Properties集合对象,添加数据
2.创建字节输出流/字符输出对象,构造方法中绑定要输出的目的地
3.使用Properties集合中的store()方法,把properties集合中的临时数据,持久化到硬盘中存储
4.释放资源
示例:
static void properties_store() throws IOException {
//创建properties对象
Properties prop = new Properties();
//存储字符串键值对
prop.setProperty("swagger", "ranger");
prop.setProperty("swagger1", "ranger1");
prop.setProperty("swagger2", "ranger2");
prop.setProperty("swagger3", "ranger3");
//这里直接在方法内new 输出流对象,就不用关闭流,因为方法执行完后会自动释放资源
prop.store(new FileWriter("./src/JavaCore/IO/FOSPROP.txt"), " new data");
/*try (
FileWriter fw = new FileWriter("./src/JavaCore/IO/FOSPROP.txt")
) {
//在Properties中存储键值对,键和值都是字符串
prop.setProperty("swagger", "ranger");
prop.setProperty("swagger1", "ranger1");
prop.setProperty("swagger2", "ranger2");
prop.setProperty("swagger3", "ranger3");
prop.store(fw, "sava data");
} catch (IOException e) {
System.out.println(e);
}*/
}
从硬盘里读取--load()
void load(InputStream inStream)
从输入字节流读取属性列表(键和元素对)。
void load(Reader reader)
以简单的线性格式从输入字符流读取属性列表(关键字和元素对)。
使用步骤
1.创建 Properties 对象,
2.使用Properties对象的load()读取文件中的键值对
3.遍历集合
注意:
1.存储键值对的文件,键值默认使用=,空格或其他符号链接
2.文件中可以使用#进行注释,被注释的键值对不会再被读取
3.键值对中的键值都默认为字符串,不用加引号
4.如果格式不对即没有=,空格等分隔符,那么按行来分,每一行都会被当作key
5.输出set集合是不保证顺序的
示例:
static void properties_load() throws IOException {
//新建Properties对象
Properties prop = new Properties();
//使用对象读取文件数据
prop.load(new FileReader("./src/JavaCore/IO/FOSPROP.txt"));
//使用properties的stringpropertyNames()方法获取键的集合
Set<String> set = prop.stringPropertyNames();
//遍历键获取所有的键值对
for (String key: set) System.out.println(key + ":" + prop.getProperty(key));
}
本博客为Swagger-Ranger的笔记分享,文章会持续更新
文中源码地址: https://github.com/Swagger-Ranger
欢迎交流指正,如有侵权请联系作者确认删除: liufei32@outlook.com
Properties IO持久化的更多相关文章
- Properties -IO相关的双列集合类
IO相关的集合类 java.util.Properties集合 extends hashtable(淘汰) Properties类表示了一个持久的属性集.Properties可保存流中或从流中加载 P ...
- properties + IO 读取配置文件
1.项目目录树 2.配置文件config.properties username = sushe password = sushe url = jdbc:mysql://172.16.100.10:3 ...
- java.util.Properties类 学习笔记
学习目标: 1.认识properties文件,理解其含义,会正确创建properties文件. 2.会使用java.util.Properties类来操作properties文件. 3.掌握相对路 ...
- Android下使用Properties文件保存程序设置
原文:http://jerrysun.blog.51cto.com/745955/804789 废话不说,直接上代码. 读取.properties文件中的配置: String strValue ...
- Java中Properties类的学习总结
学习目标: 1.认识properties文件,理解其含义,会正确创建properties文件. 2.会使用java.util.Properties类来操作properties文件. 一.认识prope ...
- 【转】Android下使用Properties文件保存程序设置
原文:http://jerrysun.blog.51cto.com/745955/804789 废话不说,直接上代码. 读取.properties文件中的配置: String strValue ...
- Java之IO流(字节流,字符流)
IO流和Properties IO流 IO流是指计算机与外部世界或者一个程序与计算机的其余部分的之间的接口.它对于任何计算机系统都非常关键, 因而所有 I/O 的主体实际上是内置在操作系统中的.单独的 ...
- JAVA基础之——JDK分析io、nio
在哪儿:jdk\jre\lib\rt.jar package java.io; package java.nio; 1 分类 1.1 IO 持久化序列化对象并压缩步骤 new FileOutput ...
- java进阶(33)--IO流
一.IO流概念:1.基本概念2.IO流分类3.java.io流的四大家族4.流的close和flush方法5.java.id下常用的16个流 二.FileInputStream字节输入流1.FileI ...
随机推荐
- 通过pip3安装ipython
操作系统:Centos7.4:ipython可以用来测试python语句,故需要安装. 首先需要安装epelde的扩展库: easy_install是由PEAK(Python Enterprise A ...
- day03 hadoop的解压与配置文件的配置,还需要看视频
拷贝hadoop1.2.1.tar.gz安装包到其他的节点上 scp -r ~/hadoop-1.2.1.tar.gz root@node2:~/ tar -zxvf hadoop-1.2.1.t ...
- hadoop mapreduce 计算平均气温的代码,绝对原创
1901 46 1902 21 1903 48 1904 33 1905 43 1906 47 1907 31 1908 28 1909 26 1910 35 1911 30 1912 16 1913 ...
- Linux下UDP发送大量请求导致Operation not permitted的问题探讨
一.问题背景目前公司准备上微服务的架构模式,在对比大量的API网关之后,最后选中了Kong作为我们的API网关,在经过大量的研究之后,啊呸,踩坑之后,终于跑起来了,简直是普天同庆,撒花祝贺. 但是在美 ...
- C/C++中变量类型最值之宏定义
C/C++ [climits(limits.h)] CHAR_BIT Number of bits for a char object (byte) ...
- [Gym 101334E]Exploring Pyramids(区间dp)
题意:给定一个先序遍历序列,问符合条件的树的种类数 解题关键:枚举分割点进行dp,若符合条件一定为回文序列,可分治做,采用记忆化搜索的方法. 转移方程:$dp[i][j] = \sum {dp[i + ...
- 又见GCD (HDU 2504)
这个题真的很水,但我竟然连错,在此警醒自己!!! 写代码改了东边,忘了西边,“认真”这两个字又被我吃了,打脸啪啪啪啪. #include<iostream> using namespace ...
- ExecuteNonQuery(),ExecuteScalar(),ExecuteReader的用法-转
using System.Data.SqlClient;...SqlConnection conn = new SqlConnection(@"server=ws7\leosql;datab ...
- C#中的运算符和表达式
说起C#运算符和表达式,小伙伴们肯定以为很简单,其实要用好表达式,不是一件容易的事.一个好的表达式可以让你做事半功倍的效果,比如三元表达式,可以让你少写N多个if和case语句. 表达式 由 操作数( ...
- 一套简单的web即时通讯——第二版
前言 接上一版,这一版的页面与功能都有所优化,具体如下: 1.优化登录拦截 2.登录后获取所有好友并区分显示在线.离线好友,好友上线.下线都有标记 3.将前后端交互的值改成用户id.显示值改成昵称ni ...