Java笔记 - IO流 - Properties集合和IO流

Properties是HashTabel的一个子类,它表示了一个属性集。
特点:1.Properties集合中的键和值都是字符串类型的,所以不需要定义泛型。
2.Properties集合中的数据可以保存到流中,或者从流中获取。
通常,该集合用于操作以键值对形式存在的配置文件。

Properties集合的常用方法

public Object setProperty(String key, String value):向Properties集合中存储数据,调用 Hashtable 的方法 put。
public String getProperty(String key):根据键获取值。
如果想要获取全部的键值,可以将Map集合转为Set集合,或者使用Properties类提供的方法:
public Enumeration< ?> propertyNames():返回属性列表中所有键的枚举
public Set< String> stringPropertyNames():返回此属性列表中的键集,其中该键及其对应值是字符串

Properties prop = new Properties();
prop.setProperty("zhangsan", "20");
prop.setProperty("lisi", "24");
prop.setProperty("wangwu", "63");
prop.setProperty("zhaoliu", "56");

prop.setProperty("wangwu", "36");//修改元素

Set<String> names = prop.stringPropertyNames();
Iterator<String> it = names.iterator();
while (it.hasNext()) {
    String key = it.next();
    String value = prop.getProperty(key);
    System.out.println(key+":"+value);
}

输出结果:

zhangsan:20
lisi:24
wangwu:36
zhaoliu:56

Properties集合和IO流

Properties集合信息的查看

public void list(PrintStream out):将属性列表输出到指定的输出流。参数是PrintStream类型的,System.out标准输出流就是PrintStream类型。这个方法相当于把集合中的元素移到输出流中去,在这里也就是控制台中,在控制台查看。只是打印出来看一下,不能进行操作,主要是调试时使用。

Properties prop = new Properties();
prop.setProperty("zhangsan", "20");
prop.setProperty("lisi", "24");
prop.setProperty("wangwu", "63");
prop.setProperty("zhaoliu", "56");

prop.list(System.out);

输出结果:

-- listing properties --
zhangsan=20
lisi=24
wangwu=63
zhaoliu=56

Properties属性信息持久化

如果我们将属性信息保存在Properties集合中,也就是保存在内存中,这样程序只要一结束,系统退出内存,属性信息就消失了。我们想将这些属性信息保存起来,保存在硬盘上,便可以永久使用,只要使用的时候读取即可。
如果想要将Properties集合信息保存在本地,就需要输出流。
public void store(OutputStream out, String comments):以适合使用 load(InputStream) 方法加载到 Properties 表中的格式,将此 Properties 表中的属性列表(键和元素对)写入输出流。
public void store(Writer writer, String comments):以适合使用 load(Reader) 方法的格式,将此 Properties 表中的属性列表(键和元素对)写入输出字符。
注意:comments是属性信息文件的备注,只能使用英文,如果使用中文会转成十六进制。

Properties prop = new Properties();
prop.setProperty("zhangsan", "20");
prop.setProperty("lisi", "24");
prop.setProperty("wangwu", "63");
prop.setProperty("zhaoliu", "56");
//既然是将数据保存到文件中,就要用到输出流
FileOutputStream fos = new FileOutputStream("E:\\prop.txt");
prop.store(fos, "info");

fos.close();

输出结果:

//硬盘上产生了一个prop.txt文件
#info
#Sun Jun 18 10:19:55 CST 2017
zhangsan=20
lisi=24
zhaoliu=56
wangwu=63

Properties属性信息读取

如果已经存在属性信息,我们想要读取这些信息到集合中,方便我们进行操作。
注意:必须要保证该文件中的数据是键值对。
public void load(InputStream inStream):从输入流中读取属性列表(键和元素对)。
public void load(Reader reader):按简单的面向行的格式从输入字符流中读取属性列表(键和元素对)。

Properties prop = new Properties();
//既然是从文件中读取数据,就要用到输入流
FileInputStream fis = new FileInputStream("E:\\prop.txt");
prop.load(fis);//将文件中的信息读取到Properties集合中
prop.list(System.out);//把Properties集合的信息打印到控制台

输出结果:

-- listing properties --
zhangsan=20
lisi=24
zhaoliu=56
wangwu=63
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值