1. Map

    • Hashtable

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

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

// list(PrintStream out);
public static void method(){ Properties prop = new Properties(); prop.setProperty("wangcai","18");
prop.setProperty("xiaoqiang","28");
prop.setProperty("zhaoliu","25"); prop.list(System.out); // 将集合信息打印到控制台
} // 将 Properties 表中的属性列表写入到输出流:
// store(OutputStream out, String comments(属性列表的描述));
// store(Writer writer, String comments); public static void method_1(){ Properties prop = new Properties(); prop.setProperty("wangcai","18");
prop.setProperty("xiaoqiang","28");
prop.setProperty("zhaoliu","25"); // 想要将这些集合中的字符串键值信息持久化存储到文件中
// 需要关联输出流
FileOutputStream fos = new FileOutputStream("info.txt"); // 将集合中数据存储到文件中, 使用 store() 方法
prop.store(fos,"name+age"); fos.close(); // 关闭流
} // 将硬盘上已有的文件信息读取到 Properties 集合中
// load(InputStream in); 字节流
// load(Reader reader); 字符流 public static void method_2(){ Properties prop = new Properties(); // 集合中的数据来自与一个文件
// 注意: 必须要保证该文件中的数据是键值对
// 需要使用到读取流(字节流或字符流)
FileInputStream fis = new FileInputStream("info.txt"); // 使用 load() 方法
prop.load(); fis.close();
} // 模拟实现 load() 方法
public static void MyLoad(){
Properties prop = new Properties(); BufferedReader bufr = new BufferedReader(new FileReader("info.txt")); String line = null;
while((line=bufr.readLine())!=null){
// 将 info.txt 中的注释文件过滤出去
if(line.startsWith("#"))
continue; // 使用 "=" 切割字符串
String[] arr = line.split("="); // 存入 Properties 集合中
prop.setProperty(arr[0],arr[1]);
} bufr.close();
} // 示例二: 对已有的配置文件中的信息进行修改
/*
* 思路:
* 读取这个文件
* 将这个文件中的键值数据存储到集合中
* 通过集合对数据进行修改
* 在通过流将修改后的数据存储到文件中
*/ public static void test() throws IOException{ // 首先将文件封装成对象, 判断该文件是否存在
// 如果不存在, 则创建一个新的
File file = new File("info.txt");
if(!file.exists()){
file.createNewFile();
}
// 读取该文件, 流可以直接操作文件对象
FileReader fr = new FileReader(file); // 将文件中的键值数据存储到集合中
Properties prop = new Properties();
prop.load(fr); // 修改数据
prop.setProperty("zhaoliu","30"); // 将修改后的 Properties 存储到文件中
FileWriter fw = new FileWriter(file);
prop.store(fw,"changeName"); // 这是将 info.txt 中的内容全部覆写一遍
// 并不是仅仅修改了 zhaoliu
// store() 方法需要两个参数
fr.close();
fw.close(); }

参考资料

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. 阿里大鱼短信接口(Python3版)

    近期由于须要用到短信接口,选型的的结果是用阿里大鱼的短信服务,然而淘宝开放平台(TOP)的SDK已经非常多年没有更新了.不支持python3.自己动手改了半天,还是不太正常,索性不用它,自己写一个算了 ...

  2. 655. Big Integer Addition【easy】

    Given two non-negative integers num1 and num2 represented as string, return the sum of num1 and num2 ...

  3. sublimtext3 自定义编译环境

    sublime text是一个非常神奇到编辑器,对于我这种小白来说,感觉比vim好用,但是如果用sublime自带到编译环境到话,是没法向程序汇总输入数据的,所以要自己新建编译命令 { "c ...

  4. PHP学习笔记(5)GD库画验证码

    <?php header("content-type:image/png"); $width = 500; $height = 500; $img = imagecreate ...

  5. MapReduce编程实例4

    MapReduce编程实例: MapReduce编程实例(一),详细介绍在集成环境中运行第一个MapReduce程序 WordCount及代码分析 MapReduce编程实例(二),计算学生平均成绩 ...

  6. sqlmap里如何添加字典

    在sqlmap的目录下有那么一个目录.即"TXT"目录. 该目录下是放字典的. 我在日一个站的时候没有破解出表明.然后不小心下载到了数据库. sqlmap无法猜出表是啥.ps:ac ...

  7. ecshop3.0.0 release0518 SQL注入

    bugscan上的漏洞,自己复现了一下 注入在根目录下的flow.php elseif ($_REQUEST['step'] == 'repurchase') { include_once('incl ...

  8. root-me web server 20-30 writeup

    Remote File Inclusion-远程文件包含 Get the PHP source code. ctrl+u 进行RFI攻击需要同时具备三个条件(被攻击机器): allow_url_fop ...

  9. hdu6007 Mr. Panda and Crystal 最短路+完全背包

    /** 题目:hdu6007 Mr. Panda and Crystal 链接:http://acm.hdu.edu.cn/showproblem.php?pid=6007 题意:魔法师有m能量,有n ...

  10. 8237dma的四种传送方式简介

    8237A有四种工作方式:单字节传送.数据块传送.请求传送和多片级联. (1)单字节传送(single mode) 单字节传送方式是每次DMA传送时,仅传送一个字节.传送一个字节之后,当前字节计数器减 ...