Properties -IO相关的双列集合类
IO相关的集合类
java.util.Properties集合 extends hashtable(淘汰)
Properties类表示了一个持久的属性集。Properties可保存流中或从流中加载
Properties集合是一个唯一和IO流相结合的集合
- 可以使用Properties集合中的方法store,把集合中的临时数据,持久化写入到硬盘中存储
- 可以使用Properties集合中的方法load,把硬盘中保存的文件(键值对),读取到集合中使用
属性列表中每个键及对应值都是一个字符串。
- Properties集合是一个双列集合,注意key和value的泛型默认是字符串
- Object setProperty(String key, String value) 调用 Hashtable 的方法 put。
- String getProperty(String key) 通过key找到value值,此方法相当于Map集合中的get(key)方法
- Set stringPropertyNames() 返回此属性列表中的键集,其中该键及其对应值是字符串,如果在主属性列表中未找到同名的键,则还包括默认属性列表中不同的键。
private static void show01() {
//创建Properties对象,默认字符串
Properties properties = new Properties();
//使用setProperties();添加数据
properties.setProperty("No.1","王小帅");
properties.setProperty("No.2","王一帅");
properties.setProperty("No.3","王二帅");
//使用stringPropertyNames把Properties集合中的key取出放入set集合
Set<String> set = properties.stringPropertyNames();
//遍历set集合,取出Properties集合的每一个键
for (String key:set) {
//通过getProperty方法通过key获取value
String value = properties.getProperty(key);
System.out.println(key + ":"+value);
}
}
store方法
- void store(OutputStream out,String comments)
- void store(Writer writer,String comments)
- 参数:
- OutputStream out,字节输出流,不可写中文
- Writer writer:字符输出流,可以写中文
- String comments:用来解释说明保存的文件是做什么的,不能用中文,会产生乱码,默认Unicode编码。一般comments为空字符串
- 使用步骤
- 创建Properties集合对象,添加数据
- 创建字节/字符输出流对象,构造方法绑定要输的地
- 使用Properties集合中的方法store,把集合时数据,持久化写入到硬盘存储
- 释放资源
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Properties;
import java.util.Set;
public class Propertiess {
public static void main(String[] args) {
try {
show01();
} catch (IOException e) {
e.printStackTrace();
}
}
private static void show01() throws IOException {
//创建Properties对象,默认字符串
Properties properties = new Properties();
//使用setProperties();添加数据
properties.setProperty("No.1","王小帅");
properties.setProperty("No.2","王一帅");
properties.setProperty("No.3","王二帅");
//使用字符输出流,绑定输出目的地
FileWriter writer = new FileWriter("b.txt");
//使用Properties的方法store,把集合中的临时数据,持久化写入文件中
properties.store(writer,"");
/*
# -comments注释类容
#Thu Sep 26 18:21:37 CST 2019
No.2=王一帅
No.1=王小帅
No.3=王二帅
*/
//使用字节输出流
properties.store(new FileOutputStream("a.txt"),"error");
/*
#error
#Thu Sep 26 18:27:58 CST 2019
No.2=\u738B\u4E00\u5E05
No.1=\u738B\u5C0F\u5E05
No.3=\u738B\u4E8C\u5E05
*/
//关闭流
writer.close();
}
}
load方法
- 可以把Properties对象的键值对读入内存中
- void load(InputStream inStream)
- void load(Reader reader) ,方法使用同上
- 区别:无comments参数
- 注:在文件中
- 读取文件的键值对连接符可以是 【= , 空格】其他符号
- 使用#开头注释的键值对不会被读取
- 读取的默认是字符串,不用刻意在文字上加引号
package cn.learn.properties;
import java.io.FileReader;
import java.io.IOException;
import java.util.Properties;
import java.util.Set;
public class Propertiess {
public static void main(String[] args) {
try {
show01();
} catch (IOException e) {
e.printStackTrace();
}
}
private static void show01() throws IOException {
//创建Properties对象,默认字符串
Properties properties = new Properties();
//使用字符输入流,绑定读取目的地
FileReader reader = new FileReader("b.txt");
//读取键值对进入集合,若有#开头的串不会被读取
properties.load(reader);
//遍历查看
Set<String> strings = properties.stringPropertyNames();
for (String key:strings) {
System.out.println(key+":"+properties.getProperty(key));
/*
No.2:王一帅
No.1:王小帅
No.3:王二帅
*/
}
//释放
reader.close();
}
}
Properties -IO相关的双列集合类的更多相关文章
- 与IO相关的等待事件troubleshooting-系列9
Buffer Cache与IO相关的等待事件: 这种等待事件的产生原因是包含DBWR进程和IO Slaves的Buffer Cache操作. 'db file parallel write' , 'd ...
- Java之Map接口(双列集合)
Map集合概述 现实生活中,我们常会看到这样的一种集合:IP地址与主机名,身份证号与个人,系统用户名与系统用户对象等,这种一一对应的关系,就叫做映射.Java提供了专门的集合类用来存放这种对象关系的对 ...
- Day 9:双列集合Map及实现该接口的类的常用方法
为什么要学双列集合? 因为单列集合无法处理映射关系,会有成对出现的数据 Map接口 如果是实现了Map接口的集合类,具备的特点: 存储的数据都是以键值对的形式存在的,键不可重复,值可以重复 Map接 ...
- java oop 单列 双列 集合, 迭代器 的使用和说明
一.集合(Collection) (1)集合的由来? 我们学习的是Java -- 面向对象 -- 操作很多对象 -- 存储 -- 容器(数组和StringBuffer) -- 数组 而数组的长度固定, ...
- Java学习:集合双列Map
数据结构 数据结构: 数据结构_栈:先进后出 入口和出口在同一侧 数据结构_队列:先进先出 入口和出口在集合的两侧 数据结构_数组: 查询快:数组的地址是连续的,我们通过数组的首地址可以找到数组,通过 ...
- HashMap -双列集合的遍历与常用的方法
package cn.learn.Map; /* java.util.Hashtable<k,y> implements Map<k,v> 早期双列集合,jdk1.0开始 同步 ...
- 56. Map(双列集合)
在生活中有些数据是以映射关系存在的,也就是成对出现的,比如:老公 老婆(key-->value) 双列集合:-------------------| Map 如果是实现了Map接口的集合 ...
- JAVA双列集合HashMap
HashMap 双列集合HashMap是属于java集合框架3大类接口的Map类, Map接口储存一组成对的键-值对象,提供key(键)到value(值)的映射.Map中的key不要求有序,不允许 ...
- Innodb Read IO 相关参数源代码解析
前言:最近在阅读Innodb IO相关部分的源代码.在阅读之前一直有个疑问,show global status 中有两个指标innodb_data_reads 和 innodb_data_read. ...
随机推荐
- JavaScript最常见的错误种类
1.报错为: Uncaught ReferenceError:未捕获引用错误(引用错误:使用了没有定义的变量) 错误之前的代码会执行,之后代码不会执行 2.报错为: Uncaught Syntaxer ...
- mysql/mariadb 初体验
距离申请这个博客号已经过了九个月,思前想后还是把知识沉淀放这里吧,不过初心一样,依旧是 '谨以此文,见证成果'.有 兴趣的话也欢迎大家去我的csdn博客转一转.以下是正文: 1.mysql安装 win ...
- HandlerMethodArgumentResolver(二):Map参数类型和固定参数类型【享学Spring MVC】
每篇一句 黄金的导电性最好,为什么电脑主板还是要用铜? 飞机最快,为什么还有人做火车? 清华大学最好,为什么还有人去普通学校? 因为资源都是有限的,我们现实生活中必须兼顾成本与产出的平衡 前言 上文 ...
- deepin 15.11 成功安装 jupyter notebook
系统环境: OS:deepin 15.11(均为系统默认配置) Anaconda Distribution 64位(x86)安装程序(517 MB) Jupyter 官方提供三种安装方式:conda. ...
- Spring学习之旅(四)--高级装配Bean
条件化 bean 有时候我们要满足某种情况才将bean 初始化放入容器中. 基于环境初始化不同的 bean 1.申明接口并创建两个实现类 public interface Teacher { void ...
- Linux系统下LNMP架构搭建
一.防火墙状态: 1.查看防火墙状态: systemctl status firewalld service iptables status firewall-cmd --state 2.永久有效开启 ...
- appium在windows系统下环境搭建
对于appium的介绍我就不说了,之前的文章介绍过.下面直入主题. 命令版本在安装过程中需要有python2环境,装完你可以装python3来写脚本. 环境要求: JDK >java语言安装包 ...
- 字符串的api (基础)
一.基础 1.字符串.charAt(index) 根据下标获取字符串的某一个字符 应用: 判断字符串的首字母是否大写 任意给定的一串字母,统计字符串里面的大写字母和小写字母的个数 2.字符串.inde ...
- 解决php中文乱码的两种方法
第一种是添加html标签变为如下格式: <html> <head> <meta http-equiv="Content-Type" content=& ...
- mybatis-generator:generate 生成代码配置踩坑详解
mybatis-generator:generate 生成代码配置踩坑不少,在此留下笔记以便后续填坑 一.mysql返回时间问题 错误信息: [ERROR] Failed to execute goa ...