黑马程序员技术交流社区

标题: 【石家庄校区】Properties 类的概述及与IO流的使用 [打印本页]

作者: 水煮牛蛙    时间: 2018-4-23 15:39
标题: 【石家庄校区】Properties 类的概述及与IO流的使用
本帖最后由 小石姐姐 于 2018-4-25 16:41 编辑

Properties 类的概述及与IO流的使用


import java.util.Map;
import java.util.Properties;
import java.util.Set;

/*
* Properties类 (又叫属性列表):  是一个双列集合  
*                1. 表示了一个持久的属性集
*                 2.该类没有泛型,<K,Y>键和值都是String类型
*                 3.实现了Map接口,继承与Hashtable<K,Y>
*
* Hashtable 与 HashMap的区别:
*                 Hashtable : 是同步的,效率比较低,安全   产生于JDK1.0
*                 HashMap   : 是非同步的,效率比较高,不安全  产生于JDK1.2
*
* 构造方法:
*                 Properties();
*
* Properties类的特有方法:
*                 String getProperty(String key,String defaultValue);
*                 //当不存在指定的键时返回默认值 defaultValue
*                 SetProperty(String key,String value)
*                 //调用Hashtable 的put方法
*
*/
public class properties_概述 {

        public static void main(String[] args) {
                //创建属性列表
                Properties prop = new Properties();
                //添加映射关系
                prop.put("pingguo", "15");
                prop.put("xiangjiao", "20");
                prop.put("juzi", "12");
               
                //遍历属性列表
                //  1
                //获取所有的key,通过key获取value
                Set<Object> keys = prop.keySet();
                for(Object key : keys){
                        Object value = prop.get(key);
                        //因为上边添加数据的时候使用的是Map集合的方法,没有加泛型,因此需要通过Object对象接受
                        System.out.println(key+"="+value);
                }
                /*Output:
                        juzi=12
                        xiangjiao=20
                        pingguo=15
                *///~
                System.out.println("--------------");
               
                // 2
                //获取映射关系对象
                Set<Map.Entry<Object,Object>> entrys = prop.entrySet();
                for(Map.Entry<Object, Object>entry: entrys){
                        Object key = entry.getKey();
                        Object value = entry.getValue();
                        System.out.println(key+""+value);
                }
               
               
        }

}
----------------------
>>>>>>>  Properties 和   IO流   结合的功能   <<<<<<<<<<<

package com.jobday10;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Properties;

/*
* Properties和IO流结合的功能:
*                         void list(PrintWriter out)//写入文件
*                         void load(Reader reader)//获取文件中的K,V信息
*                         void store(Writer writer,String comments);//写入文件,同时可以在文件中加入标题,也可以为null
*
* list()和store()方法的区别:
*                         list:只能将列表信息写入文件,且必须是打印流
*                         store:可以使用字节流,字符流进行写入文件,且可以设置标题.
*                                      也可以 将comments设置为null(设置后文本不显示标题,只显示一个时间)
*/

public class Properties与IO流的配合使用 {

        public static void main(String[] args) throws IOException {
                //proper输入流方法();
                //load_读取文件方法();
                //创建属性列表对象
                Properties prop = new Properties();
                //添加映射关系
                prop.setProperty("qq01","pingguo");
                prop.setProperty("qq02","xiangjiao");
                prop.setProperty("qq03","juzi");
               
                //void store(Writer writer, String comments)
                //创建输出流对象
                FileWriter fw = new FileWriter("e.txt");
                prop.store(fw,"hello");
               
                //释放资源
                fw.close();
                //输出到文件中的数据格式:  
                /*Output:
                        #hello
                        #Sat Apr 14 15:51:10 CST 2018
                        qq03=juzi
                        qq02=xiangjiao
                        qq01=pingguo
                *///~
               
               
        }
        private static void load_读取文件方法() throws FileNotFoundException, IOException {
                //创建属性列表对象
                Properties prop = new Properties();
                //创建一个输入流对象
                FileReader fr = new FileReader("d.txt");
               
                //void load(Reader reader)
                prop.load(fr);
                fr.close();
               
                //输出
                System.out.println(prop);
                 
                /* Output:
                        {--=listing properties --, qq03=juzi, qq02=xiangjiao, qq01=pingguo}
                 *///~
        }
        //将列表的K,V信息写入文件     void list(PrintWriter out)  的使用
        private static void proper输入流方法() throws FileNotFoundException {
                //创建属性列表对象
                Properties prop = new Properties();
                //添加映射关系
                prop.setProperty("qq01","pingguo");
                prop.setProperty("qq02","xiangjiao");
                prop.setProperty("qq03","juzi");
                //创建打印流对象
                PrintWriter out = new PrintWriter("d.txt");
                //void list(PrintWriter out)
                prop.list(out);
                //释放资源
                out.close();
                //---写入到文件中的内容格式---
                /*Output:
                        -- listing properties --
                        qq03=juzi
                        qq02=xiangjiao
                        qq01=pingguo
                *///~
        }

}






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2