1. Map

    • Hashtable

      • Properties
  2. 特点:
    1. 该集合中的键和值都是字符串类型
    2. 集合中的数据可以保存到流中, 或者从流中获取
  3. 应用:
    • 通常该集合用于操作以键值对形式存在的配置文件
  4. 常用方法:
  1. // 单个元素的存和取:
  2. // 存元素
  3. setProperty();
  4. // 取元素
  5. getProperty();
  6. // 获取所有元素 (将 Map 集合转换成 Set 集合)
  7. Set<String> stringPropertyNames(); // 返回此属性列表中的键集
  8. // 示例:
  9. public static void propertiesDemo(){
  10. // 创建一个 Properties 的集合
  11. Properties prop = new Properties();
  12. // 存储元素, 注意, 键和值都是字符串
  13. prop.setProperty("wangcai","22");
  14. prop.setProperty("lisi","32");
  15. prop.setProperty("zhangsan",35);
  16. // 修改元素, 键相同, 值覆盖
  17. prop.setProperty("lisi","14");
  18. // 获取所有元素
  19. Set<String> names = prop.stringPropertyNames();
  20. for(String name:names){
  21. String value = prop.getProperty(name);
  22. System.out.println(name+":"+value);
  23. }
  24. }

Properties 集合和流对象相结合的方法

  1. // list(PrintStream out);
  2. public static void method(){
  3. Properties prop = new Properties();
  4. prop.setProperty("wangcai","18");
  5. prop.setProperty("xiaoqiang","28");
  6. prop.setProperty("zhaoliu","25");
  7. prop.list(System.out); // 将集合信息打印到控制台
  8. }
  9. // 将 Properties 表中的属性列表写入到输出流:
  10. // store(OutputStream out, String comments(属性列表的描述));
  11. // store(Writer writer, String comments);
  12. public static void method_1(){
  13. Properties prop = new Properties();
  14. prop.setProperty("wangcai","18");
  15. prop.setProperty("xiaoqiang","28");
  16. prop.setProperty("zhaoliu","25");
  17. // 想要将这些集合中的字符串键值信息持久化存储到文件中
  18. // 需要关联输出流
  19. FileOutputStream fos = new FileOutputStream("info.txt");
  20. // 将集合中数据存储到文件中, 使用 store() 方法
  21. prop.store(fos,"name+age");
  22. fos.close(); // 关闭流
  23. }
  24. // 将硬盘上已有的文件信息读取到 Properties 集合中
  25. // load(InputStream in); 字节流
  26. // load(Reader reader); 字符流
  27. public static void method_2(){
  28. Properties prop = new Properties();
  29. // 集合中的数据来自与一个文件
  30. // 注意: 必须要保证该文件中的数据是键值对
  31. // 需要使用到读取流(字节流或字符流)
  32. FileInputStream fis = new FileInputStream("info.txt");
  33. // 使用 load() 方法
  34. prop.load();
  35. fis.close();
  36. }
  37. // 模拟实现 load() 方法
  38. public static void MyLoad(){
  39. Properties prop = new Properties();
  40. BufferedReader bufr = new BufferedReader(new FileReader("info.txt"));
  41. String line = null;
  42. while((line=bufr.readLine())!=null){
  43. // 将 info.txt 中的注释文件过滤出去
  44. if(line.startsWith("#"))
  45. continue;
  46. // 使用 "=" 切割字符串
  47. String[] arr = line.split("=");
  48. // 存入 Properties 集合中
  49. prop.setProperty(arr[0],arr[1]);
  50. }
  51. bufr.close();
  52. }
  53. // 示例二: 对已有的配置文件中的信息进行修改
  54. /*
  55. * 思路:
  56. * 读取这个文件
  57. * 将这个文件中的键值数据存储到集合中
  58. * 通过集合对数据进行修改
  59. * 在通过流将修改后的数据存储到文件中
  60. */
  61. public static void test() throws IOException{
  62. // 首先将文件封装成对象, 判断该文件是否存在
  63. // 如果不存在, 则创建一个新的
  64. File file = new File("info.txt");
  65. if(!file.exists()){
  66. file.createNewFile();
  67. }
  68. // 读取该文件, 流可以直接操作文件对象
  69. FileReader fr = new FileReader(file);
  70. // 将文件中的键值数据存储到集合中
  71. Properties prop = new Properties();
  72. prop.load(fr);
  73. // 修改数据
  74. prop.setProperty("zhaoliu","30");
  75. // 将修改后的 Properties 存储到文件中
  76. FileWriter fw = new FileWriter(file);
  77. prop.store(fw,"changeName"); // 这是将 info.txt 中的内容全部覆写一遍
  78. // 并不是仅仅修改了 zhaoliu
  79. // store() 方法需要两个参数
  80. fr.close();
  81. fw.close();
  82. }

参考资料

Properties 集合的更多相关文章

  1. 黑马程序员——【Java基础】——File类、Properties集合、IO包中的其他类

    ---------- android培训.java培训.期待与您交流! ---------- 一.File类 (一)概述 1.File类:文件和目录路径名的抽象表现形式 2.作用: (1)用来将文件或 ...

  2. Properties集合的练习

    1.更改文件中的数据,特定键的值: 需求:我有一个文本文件(user.txt),我知道数据是键值对形式的,但是不知道内容是什么. 请写一个程序判断是否有"lisi"这样的键存在,如 ...

  3. java基础知识回顾之java集合类-Properties集合

    /** java.lang.Object   |--java.util.Dictionary<K,V>      |--java.util.Hashtable<Object,Obje ...

  4. Properties集合

    Map |--Hashtable |--Properties Properties集合特点: 1.该集合中的键和值都是字符串类型 2.集合中的数据可以保存在IO流中或者从IO流中获取数据. 通常该集合 ...

  5. -1-3 java集合框架基础 java集合体系结构 Collection 常用java集合框架 如何选择集合 迭代器 泛型 通配符概念 Properties 集合 迭代器

    集合又称之为容器存储对象的一种方式 •数组虽然也可以存储对象,但长度是固定的:显然需要可变长度的容器 集合和数组的区别?                 A:长度区别                  ...

  6. IO流--与properties集合配合使用

    IO流--与properties集合配合使用: 注:生产上主要用于常量文件的配置,读取常量文件: 1:properties集合的放值与取值: /* * properties集合继承自hashTable ...

  7. Properties集合_修改配置信息

    集合中的数据来自于一个文件  注意:必须要保证该文件中的数据是键值对.  需要使用到读取流 使用load()方法读取已有文件中的数据,存储到Properties集合中 public class Pro ...

  8. Properties集合_list方法与store方法

    Properties集合和流对象结合的功能 list()方法: import java.util.Properties; public class PropertiesDemo { public st ...

  9. Properties集合概述与存和取

    Properties集合:(Map集合下的Hashtable集合下的一个子类) 特点: 1.集合中的键和值都是字符串 2.集合中的数据可以保存到流中,或者从流中获取 该集合通常用于操作以键值对形式存在 ...

  10. Java中Properties集合总结

    一:定义 表示一个持久的集,可以存在流中或者从流中加载.用来读取Java的配置文件,在Java中为.properties为后缀名的文本文件. 二:特点 是 Hashtable子类,map集合方法都可以 ...

随机推荐

  1. 查看selinux的状态

    sh-4.1# getenforce Disabled sh-4.1# getenforce Disabled 永久方法 – 需要重启服务器 修改/etc/selinux/config文件中设置SEL ...

  2. PHPEXCEL在thinkphp中封装成类使用

    PHPEXCEL在thinkphp中封装成类使用 标签: phpexcel导出导入thinkphp -- : 435人阅读 评论() 收藏 举报 分类: php() 版权声明:本文为博主原创文章,未经 ...

  3. 无语的Filezilla

    之前也一直用filezilla,今天遇到个奇葩问题:在2008R2上装完filezilla server,本打算生成个证书用于SSL加密,没想到一直报错"Failed to initiali ...

  4. strncmp----c++库函数

    某天,蒜头君和花椰妹在公园里散步,走着走着,我的天!他们各自都捡到了一串漂亮的字符串,然而蒜头君好奇心比较重,他想知道自己的字符串在花椰妹的字符串中出现了多少次,例如花椰妹的字符串为abababa,蒜 ...

  5. Unix系统编程()lseek系统调用

    之前知道lseek这个系统调用可以改变文件的偏移量,或者叫偏移量或指针. 文件偏移量是指执行下一个read或者write操作的文件起始位置,会以相对于文件头部起始点的文件当前位置来表示. 除非指定了O ...

  6. flutter开发目录

    1>环境 2>设计 3>登录 4>主页面 5>主页面明细 6>详情 7>商品明细 8>购物车 9>订单页 10>个人关于 11>搜索页

  7. visitor设计模式记录

    数据类型通过枚举来区分是一种简单实用的做法. 缺点是使用的时候需要通过if .switch 去判断什么类型执行什么分支操作,说是缺点其实也要看具体场景.不过如果if代码多会导致代码很长是肯定的. 复杂 ...

  8. 卧槽! JavaScript JVM运行Java!!

    由于任何计算机语言都具有巨大的灵活性,软件世界变得有点疯狂.一旦你已经吸收了用这种语言编写的编译器的想法,那么它会编译还有什么可以留下来的?但是......用JavaScript编写的Java虚拟机J ...

  9. 解决PowerDesigner中DBMS设置的问题

    转自:http://blog.csdn.net/yangpeng201203/article/details/9205913 在创建物理模型时DBMS下拉框是空的,没值,以前从来没遇到过这种现象, 开 ...

  10. java.awt包提供了基本的java程序的GUI设计工具

    java.awt包提供了基本的java程序的GUI设计工具.主要包括下述三个概念: 组件--Component 容器--Container 布局管理器--LayoutManager package T ...