IO相关的集合类


  • java.util.Properties集合 extends hashtable(淘汰)

  • Properties类表示了一个持久的属性集。Properties可保存流中或从流中加载

  • Properties集合是一个唯一和IO流相结合的集合

    1. 可以使用Properties集合中的方法store,把集合中的临时数据,持久化写入到硬盘中存储
    2. 可以使用Properties集合中的方法load,把硬盘中保存的文件(键值对),读取到集合中使用
  • 属性列表中每个键及对应值都是一个字符串。

    1. Properties集合是一个双列集合,注意key和value的泛型默认是字符串
    2. Object setProperty(String key, String value) 调用 Hashtable 的方法 put。
    3. String getProperty(String key) 通过key找到value值,此方法相当于Map集合中的get(key)方法
    4. 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)
  • 参数:
    1. OutputStream out,字节输出流,不可写中文
    2. Writer writer:字符输出流,可以写中文
    3. String comments:用来解释说明保存的文件是做什么的,不能用中文,会产生乱码,默认Unicode编码。一般comments为空字符串
  • 使用步骤
    1. 创建Properties集合对象,添加数据
    2. 创建字节/字符输出流对象,构造方法绑定要输的地
    3. 使用Properties集合中的方法store,把集合时数据,持久化写入到硬盘存储
    4. 释放资源
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参数
  • 注:在文件中
    1. 读取文件的键值对连接符可以是 【= , 空格】其他符号
    2. 使用#开头注释的键值对不会被读取
    3. 读取的默认是字符串,不用刻意在文字上加引号
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相关的双列集合类的更多相关文章

  1. 与IO相关的等待事件troubleshooting-系列9

    Buffer Cache与IO相关的等待事件: 这种等待事件的产生原因是包含DBWR进程和IO Slaves的Buffer Cache操作. 'db file parallel write' , 'd ...

  2. Java之Map接口(双列集合)

    Map集合概述 现实生活中,我们常会看到这样的一种集合:IP地址与主机名,身份证号与个人,系统用户名与系统用户对象等,这种一一对应的关系,就叫做映射.Java提供了专门的集合类用来存放这种对象关系的对 ...

  3. Day 9:双列集合Map及实现该接口的类的常用方法

    为什么要学双列集合? 因为单列集合无法处理映射关系,会有成对出现的数据 Map接口  如果是实现了Map接口的集合类,具备的特点: 存储的数据都是以键值对的形式存在的,键不可重复,值可以重复 Map接 ...

  4. java oop 单列 双列 集合, 迭代器 的使用和说明

    一.集合(Collection) (1)集合的由来? 我们学习的是Java -- 面向对象 -- 操作很多对象 -- 存储 -- 容器(数组和StringBuffer) -- 数组 而数组的长度固定, ...

  5. Java学习:集合双列Map

    数据结构 数据结构: 数据结构_栈:先进后出 入口和出口在同一侧 数据结构_队列:先进先出 入口和出口在集合的两侧 数据结构_数组: 查询快:数组的地址是连续的,我们通过数组的首地址可以找到数组,通过 ...

  6. HashMap -双列集合的遍历与常用的方法

    package cn.learn.Map; /* java.util.Hashtable<k,y> implements Map<k,v> 早期双列集合,jdk1.0开始 同步 ...

  7. 56. Map(双列集合)

    在生活中有些数据是以映射关系存在的,也就是成对出现的,比如:老公  老婆(key-->value) 双列集合:-------------------| Map    如果是实现了Map接口的集合 ...

  8. JAVA双列集合HashMap

    HashMap 双列集合HashMap是属于java集合框架3大类接口的Map类,   Map接口储存一组成对的键-值对象,提供key(键)到value(值)的映射.Map中的key不要求有序,不允许 ...

  9. Innodb Read IO 相关参数源代码解析

    前言:最近在阅读Innodb IO相关部分的源代码.在阅读之前一直有个疑问,show global status 中有两个指标innodb_data_reads 和 innodb_data_read. ...

随机推荐

  1. Day 07--最终修改(三)

    2.明天着重学一下逻辑层的语法,以及界面层的数据绑定,与队友交流进度 3.今天修改也终于完成,除了搞c++以外的全部身心都放在这个东西身上也觉得它有点难搞,说明计算机不是吃素的.甚至在使用xml语法的 ...

  2. Fortigate防火墙常用命令

    命令结构 #config 对策略,对象等进行配置 #get  查看相关对象的参数 #show 查看配置文件 #diagnose 诊断命令 #execute  常用的工具命令,如ping treacer ...

  3. vue当图片加载失败时,用一个默认图片替换;

    原理就是给img绑定error事件,替换原有的src地址. 首先在data中创建一个defaultImg(随便起的),里面的值是该默认图片的地址: 在html页面的img标签上绑定该属性 这样默认图片 ...

  4. python画混淆矩阵(confusion matrix)

    混淆矩阵(Confusion Matrix),是一种在深度学习中常用的辅助工具,可以让你直观地了解你的模型在哪一类样本里面表现得不是很好. 如上图,我们就可以看到,有一个样本原本是0的,却被预测成了1 ...

  5. [Python] socket发送UDP广播实现聊天室功能

    一.说明 本文主要使用socket.socket发送UDP广播来实现聊天室功能. 重点难点:理解UDP通讯流程.多线程.UDP广播收发等. 测试环境:Win10\Python3.5. 程序基本流程:创 ...

  6. 转载-springboot缓存开发

    转载:https://www.cnblogs.com/wyq178/p/9840985.html   前言:缓存在开发中是一个必不可少的优化点,近期在公司的项目重构中,关于缓存优化了很多点,比如在加载 ...

  7. Netty源码分析 (一)----- NioEventLoopGroup

    提到Netty首当其冲被提起的肯定是支持它承受高并发的线程模型,说到线程模型就不得不提到NioEventLoopGroup这个线程池,接下来进入正题. 线程模型 首先来看一段Netty的使用示例 pa ...

  8. SCRUM起源

    http://www.scrumcn.com/agile/scrum-knowledge-library/scrum.html#tab-id-3 Scrum的原始含义 Scrum原始含义是指英式橄榄球 ...

  9. Badboy - variable setter

    参考: http://leafwf.blog.51cto.com/872759/1117646 http://www.51testing.com/html/00/130600-1367743.html ...

  10. hdu6354 杭电第五场 Everything Has Changed 计算几何

    Everything Has Changed Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java ...