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集合存储键值对

  1. /*
  2. @author :yinzhengjie
  3. Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
  4. EMAIL:y1053419035@qq.com
  5. */
  6.  
  7. package cn.org.yinzhengjie.note6;
  8.  
  9. import java.util.Properties;
  10. import java.util.Set;
  11.  
  12. public class PropertiesDemo {
  13. public static void main(String[] args) {
  14. Properties p = new Properties();
  15. //1>.使用setProperty方法存储键值对,其底层调用的是父类(Hashtable)的put方法,可以通过源码查看。
  16. p.setProperty("Name", "yinzhengjie");
  17. p.setProperty("Age", "18");
  18. p.setProperty("Hobby", "Cosplay");
  19.  
  20. System.out.println(p);
  21. //2>.通过键获取值,如果给定的键值不存在就返回null。
  22. String value = p.getProperty("Name1");
  23. System.out.println(value);
  24.  
  25. //3>.通过stringPropertyNames方法遍历Properties集合,该方法是将集合中的键存储到Set集合,类似于Map接口的方法keySet.
  26. Set<String> set = p.stringPropertyNames();
  27. for (String key : set) {
  28. System.out.println(key+"==="+p.getProperty(key));
  29. }
  30.  
  31. }
  32. }
  33.  
  34. /*
  35. 以上代码执行结果如下:
  36. {Hobby=Cosplay, Age=18, Name=yinzhengjie}
  37. null
  38. Hobby===Cosplay
  39. Age===18
  40. Name===yinzhengjie
  41. */

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

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

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

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

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

三.小试牛刀

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

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

yinzhengjie.properties 文件内容

  1. /*
  2. @author :yinzhengjie
  3. Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
  4. EMAIL:y1053419035@qq.com
  5. */
  6.  
  7. package cn.org.yinzhengjie.note6;
  8.  
  9. import java.io.FileInputStream;
  10. import java.io.FileOutputStream;
  11. import java.util.Properties;
  12.  
  13. /*
  14. * Properties不属于io流体系,java.util包下.
  15. * 作为Hashtable的子类使用
  16. *
  17. */
  18. public class PropertiesDemo {
  19.  
  20. public static void main(String[] args) throws Exception {
  21. Properties p = new Properties();
  22. p.load(new FileInputStream("yinzhengjie.properties"));
  23.  
  24. String times = p.getProperty("times");
  25. int i = Integer.parseInt(times);
  26.  
  27. if(i <= 0){
  28. System.out.println("试用结束");
  29. }else{
  30. System.out.println("当前是第 : " + (5 - i + 1) + "次试用,还剩: " + (i - 1) +" 次");
  31. play();
  32. p.setProperty("times", i - 1 + "");
  33. p.store(new FileOutputStream("yinzhengjie.properties"), null);
  34. }
  35. }
  36.  
  37. private static void play() {
  38. System.out.println("正在玩游戏...");
  39. }
  40.  
  41. }

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. 2-Sixth Scrum Meeting20151206

    任务分配 闫昊: 今日完成:请假.(最近代码写得多……很累……) 明日任务:完成数据库设计. 唐彬: 今日完成:ios客户端代码的深度学习. 明日任务:读IOS讨论区后台接口. 史烨轩: 今日完成:请 ...

  2. [2019BUAA软工]第0次代码作业

    Visual Studio 单元测试的简单应用 写在前面   笔者根据作业的介绍以及Visual Studio 2017 文档的相关说明,进行了Visual Studio 单元测试的简单应用. Tip ...

  3. Task 6.3 冲刺Two之站立会议1

    今天是二次冲刺的第一天,由于第一阶段已经大概完成了软件的主体功能和框架,我主要看了一下同学们提出的视频和音质的问题,想办法做出了相应的改善.另外我们的功能还是比较单一的,要对主界面进行一定的扩充,所以 ...

  4. git的使用(本地及关联远程,上传到远程)

    前言:本想这个博客就是用来交作业的,因为作业,学习了git ,现在觉得,既然有这个博客了,就好好用一下吧,也给自己养成个好习惯,就也来记录一下吧,关于git的本地仓库上传,本地与远程的关联,从本地上传 ...

  5. 深入理解Java虚拟机 &GC分代年龄

    堆内存 Java 中的堆是 JVM 所管理的最大的一块内存空间,主要用于存放各种类的实例对象.在 Java 中,堆被划分成两个不同的区域:新生代 ( Young ).老年代 ( Old ).新生代 ( ...

  6. 打开ubuntu终端的两个方法【最快速】

    两种快捷方法: 1. ctrl+alt+T. 2. 桌面右击,再点击终端.

  7. SQL Server 中几个有用的特殊函数

    在SQL Server 的使用过程中,发现几个很有用,但不太常用(或细节不太清楚)的函数(存储过程): isnumeric,isdate,patindex,newid,collate,sp_execu ...

  8. git bash使用(markdown版)

    前言 我是通过这个来学习的.个人愚笨,琢磨了半天,终于搞通了,醉了醉了,以前一直使用svn,用git确实有点水土不服.本文以如何使用git为主来展开,不涉及太多理论. git是分布式的版本管理.什么叫 ...

  9. linux下 XGCOM串口助手的安装

    源码下载:http://code.google.com/p/xgcom/     也可以自己搜索下载 首先先安装依赖库,直接运行命令 #sudo apt-get install libglib2.0- ...

  10. UVAlive6439_Pasti Pas!

    题目是说给你一个字符串,现在要你用一些特殊的符号代替这个字符串中某一些子串,使得被替换后的串是一个回文串. 现在要你求替换后的字符串的最大的可能的长度. 其实这个题目没有什么固定的算法哦,我直接暴力就 ...