Properties 集合
- Map
- Hashtable
- Properties
 
 
 - Hashtable
 - 特点:
- 该集合中的键和值都是字符串类型
 - 集合中的数据可以保存到流中, 或者从流中获取
 
 - 应用:
- 通常该集合用于操作以键值对形式存在的配置文件
 
 - 常用方法:
 
// 单个元素的存和取:
    // 存元素
        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 集合的更多相关文章
- 黑马程序员——【Java基础】——File类、Properties集合、IO包中的其他类
		
---------- android培训.java培训.期待与您交流! ---------- 一.File类 (一)概述 1.File类:文件和目录路径名的抽象表现形式 2.作用: (1)用来将文件或 ...
 - Properties集合的练习
		
1.更改文件中的数据,特定键的值: 需求:我有一个文本文件(user.txt),我知道数据是键值对形式的,但是不知道内容是什么. 请写一个程序判断是否有"lisi"这样的键存在,如 ...
 - java基础知识回顾之java集合类-Properties集合
		
/** java.lang.Object |--java.util.Dictionary<K,V> |--java.util.Hashtable<Object,Obje ...
 - Properties集合
		
Map |--Hashtable |--Properties Properties集合特点: 1.该集合中的键和值都是字符串类型 2.集合中的数据可以保存在IO流中或者从IO流中获取数据. 通常该集合 ...
 - -1-3  java集合框架基础    java集合体系结构 Collection 常用java集合框架 如何选择集合 迭代器 泛型 通配符概念   Properties 集合 迭代器
		
集合又称之为容器存储对象的一种方式 •数组虽然也可以存储对象,但长度是固定的:显然需要可变长度的容器 集合和数组的区别? A:长度区别 ...
 - IO流--与properties集合配合使用
		
IO流--与properties集合配合使用: 注:生产上主要用于常量文件的配置,读取常量文件: 1:properties集合的放值与取值: /* * properties集合继承自hashTable ...
 - Properties集合_修改配置信息
		
集合中的数据来自于一个文件 注意:必须要保证该文件中的数据是键值对. 需要使用到读取流 使用load()方法读取已有文件中的数据,存储到Properties集合中 public class Pro ...
 - Properties集合_list方法与store方法
		
Properties集合和流对象结合的功能 list()方法: import java.util.Properties; public class PropertiesDemo { public st ...
 - Properties集合概述与存和取
		
Properties集合:(Map集合下的Hashtable集合下的一个子类) 特点: 1.集合中的键和值都是字符串 2.集合中的数据可以保存到流中,或者从流中获取 该集合通常用于操作以键值对形式存在 ...
 - Java中Properties集合总结
		
一:定义 表示一个持久的集,可以存在流中或者从流中加载.用来读取Java的配置文件,在Java中为.properties为后缀名的文本文件. 二:特点 是 Hashtable子类,map集合方法都可以 ...
 
随机推荐
- CentOS6.x修改主机名,关闭防火墙
			
一.centos默认主机名为localhost,不方便管理,此次,我修改为noi. 1.修改网络配置文件:/etc/sysconfig/network 首先,备份一下源文件,注意date命令和加号之间 ...
 - python对象序列化之pickle
			
本片文章主要是对pickle官网的阅读记录. The pickle module implements binary protocols for serializing and de-serializ ...
 - Oracle Explain plan 使用总结
			
Oracle Explain plan使用总结 写多了SQL语句,伴随着数据量的海增,总会遇到性能的问题.在Oracle领域一个不好的习惯,一旦遇到性能问题就推给DBA来做.长期如此,反而对DB ...
 - 关于EasyUI的Layout总结
			
版权声明:本文为博主原创文章,未经博主允许不得转载. 1.layout以html标签方式建立的 <div id="content" region="center&q ...
 - go context 讲解
			
控制并发有两种经典的方式,一种是WaitGroup,另外一种就是Context,今天我就谈谈Context. 什么是WaitGroup WaitGroup以前我们在并发的时候介绍过,它是一种控制并发的 ...
 - windows静态库的使用
			
最近在学Zeromq(像框架一样的一个socket library)的使用,里面有关于库的使用问题.今天就来复习下静态库的使用: 使用静态库是重用代码的一种绝佳方式.您不必在自己创建的每个程序中重新实 ...
 - jQuery-对Select的操作集合[终结篇]
			
jQuery获取Select选择的Text和Value: 请选择 C# Javascript jQuery C++ Java VB 选择一项试试看语法解释:1. $("#select_id ...
 - 【转】移动App测试中的最佳做法
			
一说起软件测试,测试员想到肯定是去检查文件,功能,API,性能并确定软件是否安全,以及关于软件特定部分的其他事项.但是对于移动测试,测试员不得不基于用户移动使用模式考虑移动相关的功能. 本文是基于我的 ...
 - SQLServer 批量备份与还原
			
备份与还原是数据库避不开的主题,而作为DBA,经常会面临将一台机器上的所有数据库重新构建到一台新机器上的要求: 在现在都讲究自动化管理的时代,传统的界面操作备份还原的做法不仅浪费时间和精力,而且还很容 ...
 - <! - - ... - -> 注解
			
<A HREF TARGET> 指定超连结的分割视窗 <A HREF=#锚的名称> 指定锚名称的超连结 <A HREF> 指定超连结 <A NAME=锚的名称 ...