java基础-IO流对象之Properties集合

                                  作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

一.Properties集合的特点

  Properties类表示了一个持久的属性集。Properties可保存在流中或从流中加载,属性列表中每个键即及其对应值都是一个字符串。总结其显而易见的特点如下:

    1>.Hashtable的子类,map集合中的方法都有可以用;

    2>.该集合没有泛型,键值都是字符串;

    3>.它是一个可以持久化的属性集,键值可以存储到集合中,也可以存储到持久化的设备(硬盘,U盘,光盘)上。键值的来源也可以是持久化的设备。

    4>.有和流计数相结合的方法如:“load(InputStream inStream)”,“load(Reader reader) ”,“store(OutputStream out, String comments) ”,“store(Writer writer, String comments) ”。

二.Properties集合常用方法

1>.Properties集合存储键值对

 /*
@author :yinzhengjie
Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
EMAIL:y1053419035@qq.com
*/ package cn.org.yinzhengjie.note6; import java.util.Properties;
import java.util.Set; public class PropertiesDemo {
public static void main(String[] args) {
Properties p = new Properties();
//1>.使用setProperty方法存储键值对,其底层调用的是父类(Hashtable)的put方法,可以通过源码查看。
p.setProperty("Name", "yinzhengjie");
p.setProperty("Age", "18");
p.setProperty("Hobby", "Cosplay"); System.out.println(p);
//2>.通过键获取值,如果给定的键值不存在就返回null。
String value = p.getProperty("Name1");
System.out.println(value); //3>.通过stringPropertyNames方法遍历Properties集合,该方法是将集合中的键存储到Set集合,类似于Map接口的方法keySet.
Set<String> set = p.stringPropertyNames();
for (String key : set) {
System.out.println(key+"==="+p.getProperty(key));
} }
} /*
以上代码执行结果如下:
{Hobby=Cosplay, Age=18, Name=yinzhengjie}
null
Hobby===Cosplay
Age===18
Name===yinzhengjie
*/

2>.(load方法)流对象读取文件中的键值对,保存到集合

 /*
@author :yinzhengjie
Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
EMAIL:y1053419035@qq.com
*/ package cn.org.yinzhengjie.note6; import java.io.FileReader;
import java.io.IOException;
import java.util.Properties; public class PropertiesDemo {
public static void main(String[] args) throws IOException {
Properties p = new Properties();
//创建字符流对象,用于去读文件
FileReader fr = new FileReader("yinzhengjie.properties");
//调用集合的方法load,传递字符输入流,把文件的内容都加载到p对象中。
p.load(fr);
//加载完毕后,fr流对象就没有任何的利用价值了,关掉即可。
fr.close();
System.out.println(p); }
} /*
以上代码执行结果如下:
{name=yinzhengjie, age=18, email=y1053419035@qq.com}
*/

3>.(store方法)将集合中的键值对,写入文件中保存

 /*
@author :yinzhengjie
Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
EMAIL:y1053419035@qq.com
*/ package cn.org.yinzhengjie.note6; import java.io.FileWriter;
import java.io.IOException;
import java.util.Properties;
import java.util.Set; public class PropertiesDemo {
public static void main(String[] args) throws IOException {
Properties p = new Properties();
//1>.使用setProperty方法存储键值对,其底层调用的是父类(Hashtable)的put方法,可以通过源码查看。
p.setProperty("Name", "yinzhengjie");
p.setProperty("Age", "18");
p.setProperty("Hobby", "Cosplay"); FileWriter fw = new FileWriter("yinzhengjie.properties");
//将键值对写入文件,使用集合的方法store传递字符输出流。
p.store(fw, "Add by yinzhengjie"); //注释信息不建议写中文,因为它会默认转换成Unicode编码,不易阅读! }
}

  执行之后,会生成新的文件,内容如下:

三.小试牛刀

  游戏试玩次数限制,定义一个文件,内容为:“times=5”,该参数表示玩家可以体验游戏的次数,当其值为0时实用结束。

 #Sat May 05 17:38:45 GMT+08:00 2018
times=5

yinzhengjie.properties 文件内容

 /*
@author :yinzhengjie
Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
EMAIL:y1053419035@qq.com
*/ package cn.org.yinzhengjie.note6; import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.Properties; /*
* Properties不属于io流体系,java.util包下.
* 作为Hashtable的子类使用
*
*/
public class PropertiesDemo { public static void main(String[] args) throws Exception {
Properties p = new Properties();
p.load(new FileInputStream("yinzhengjie.properties")); String times = p.getProperty("times");
int i = Integer.parseInt(times); if(i <= 0){
System.out.println("试用结束");
}else{
System.out.println("当前是第 : " + (5 - i + 1) + "次试用,还剩: " + (i - 1) +" 次");
play();
p.setProperty("times", i - 1 + "");
p.store(new FileOutputStream("yinzhengjie.properties"), null);
}
} private static void play() {
System.out.println("正在玩游戏...");
} }

java基础-IO流对象之Properties集合的更多相关文章

  1. Java基础-IO流对象之打印流(PrintStream与PrintWriter)

    Java基础-IO流对象之打印流(PrintStream与PrintWriter) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.打印流的特性 打印对象有两个,即字节打印流(P ...

  2. Java基础-IO流对象之压缩流(ZipOutputStream)与解压缩流(ZipInputStream)

    Java基础-IO流对象之压缩流(ZipOutputStream)与解压缩流(ZipInputStream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 之前我已经分享过很多的J ...

  3. Java基础-IO流对象之随机访问文件(RandomAccessFile)

    Java基础-IO流对象之随机访问文件(RandomAccessFile) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.RandomAccessFile简介 此类的实例支持对 ...

  4. Java基础-IO流对象之内存操作流(ByteArrayOutputStream与ByteArrayInputStream)

    Java基础-IO流对象之内存操作流(ByteArrayOutputStream与ByteArrayInputStream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.内存 ...

  5. Java基础-IO流对象之数据流(DataOutputStream与DataInputStream)

    Java基础-IO流对象之数据流(DataOutputStream与DataInputStream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数据流特点 操作基本数据类型 ...

  6. Java基础-IO流对象之序列化(ObjectOutputStream)与反序列化(ObjectInputStream)

    Java基础-IO流对象之序列化(ObjectOutputStream)与反序列化(ObjectInputStream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.对象的序 ...

  7. Java基础-IO流对象之字符缓冲流(BufferedWriter与BufferedReader)

    Java基础-IO流对象之字符缓冲流(BufferedWriter与BufferedReader) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.字符缓冲流 字符缓冲流根据流的 ...

  8. Java基础-IO流对象之字节缓冲流(BufferedOutputStream与BufferedInputStream)

    Java基础-IO流对象之字节缓冲流(BufferedOutputStream与BufferedInputStream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在我们学习字 ...

  9. Java基础-IO流对象之转换流(InputStreamReader与OutoutStreamWriter)

    Java基础-IO流对象之转换流(InputStreamReader与OutoutStreamWriter) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.转换流概述 我们之前 ...

随机推荐

  1. 【数据预处理】TIMIT语料库WAV文件转换

    1 问题描述 这两天复现代码.先构造数据集,纯净语音.不同噪声.不同SNR的混合语音.其中纯净语音由两部分组成,IEEE corpus和TIMIT. 一开始我用MATLAB中的audioread读取音 ...

  2. sprint站立会议

    索引卡: 工作认领:                                                                                       时间 ...

  3. Leetcode题库——5.最长回文子串

    @author: ZZQ @software: PyCharm @file: longestPalindrome.py @time: 2018/9/18 20:06 要求:给定一个字符串 s,找到 s ...

  4. 《构建之法》第四&十七章读书笔记

     <构建之法>第四&十七章读书笔记 一.         前言 再次阅读<构建之法>,愈发被其中生动有趣的举例吸引.作为一本给予软件工程学生的书籍,其不以枯燥的理论知识 ...

  5. 补发9.27“天天向上”团队Scrum站立会议

    组长:王森 组员:张金生 张政 栾骄阳 时间:2016.09.27 地点:612寝 组员 已完成 未完成 王森 分析设计亮点 原型搭建 张金生 设计UI框架 美化完善 张政 学习C#语言初步应用 熟练 ...

  6. ArrayList底层实现

    ArrayList 底层是有数组实现,实际上存放的是对象的引用,而不是对象本身.当使用不带参的构造方法生成ArrayList对象时,实际会在底层生成一个长度为10的数组 当添加元素超过10的时候,会进 ...

  7. rhel和centos7下更改网卡名称ens33为eth0

    Linux使用小Tips 整理些Linux些常遇到的问题. 修改网卡ens33为eth0 在使用RHEL和Centos7,发现网卡名称变成了EnoX,挺不习惯.现更改回旧名称eth0看着顺眼. 备份/ ...

  8. java传统的文件拷贝 相当于两个大缸需要通过一个勺子(字节数组)一点一点运过去

  9. java的4种引用 强软弱虚

    &amp;lt;img src="https://pic4.zhimg.com/d643d9ab5c933ac475cfa23063bed137_b.png" data-r ...

  10. Maximum repetition substring POJ - 3693(重复次数最多的连续重复子串)

    这题和SPOJ - REPEATS 一样  代码改一下就好了 这个题是求这个重复子串,还得保证字典序最小 巧妙运用sa 看这个 https://blog.csdn.net/queuelovestack ...