码迷,mamicode.com
首页 > 编程语言 > 详细

10java进阶——IO2

时间:2019-06-04 11:13:53      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:image   进阶   使用   get   public   int   列表   加载   传递   

1. Properties类

Properties 类表示了一个持久的属性集。Properties 可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串。

特点:

  1. Hashtable的子类,map集合中的方法都可以用。
  2. 该集合没有泛型。键值都是字符串。
  3. 它是一个可以持久化的属性集。键值可以存储到集合中,也可以存储到持久化的设备(硬盘、U盘、光盘)上。键值的来源也可以是持久化的设备。
  4. 有和流技术相结合的方法。
  • load(InputStream)  把指定流所对应的文件中的数据,读取出来,保存到Propertie集合中
  • store(OutputStream,commonts)把集合中的数据,保存到指定的流所对应的文件中,参数commonts代表对描述信息

技术图片

package cn.jxufe.java.chapter09.demo05;

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Properties;
import java.util.Set;

/*
 *  集合对象Properties类,继承Hashtable,实现Map接口
 *  可以和IO对象结合使用,实现数据的持久存储
 */
public class Test01Property {

    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
        System.out.println("使用Properties集合,存储键值对:");
        function();
        System.out.println("\nProperties集合特有方法 load:");
        function_1();
        System.out.println("\nProperties集合的特有方法store:");
        function_2();

    }

    /*
     * Properties集合的特有方法store
     * store(OutputStream out)
     * store(Writer w)
     * 接收所有的字节或者字符的输出流,将集合中的键值对,写回文件中保存
     */
    public static void function_2() throws IOException {
        Properties properties = new Properties();
        properties.setProperty("name", "zhaosi");
        properties.setProperty("age", "31");
        properties.setProperty("email", "13657914425@163.com");

        // 键值对,存回文件,使用集合的方法store传递字符输出流
        FileWriter fr = new FileWriter("d:\\pro.properties");
        properties.store(fr, "byZhao");

    }

    /*
     * Properties集合特有方法 load
     * load(InputStream in)
     * load(Reader r)
     * 传递任意的字节或者字符输入流
     * 流对象读取文件中的键值对,保存到集合
     */
    public static void function_1() throws IOException {
        Properties properties = new Properties();
        FileReader fileReader = new FileReader("d:\\pro.properties");
        // 调用集合的方法load,传递字符输入流
        properties.load(fileReader);
        fileReader.close();
        System.out.println(properties);
    }

    /*
     * 使用Properties集合,存储键值对
     * setProperty等同与Map接口中的put
     * setProperty(String key, String value)
     * 通过键获取值, getProperty(String key)
     */
    public static void function() {
        Properties properties = new Properties();
        properties.setProperty("a", "1");
        properties.setProperty("b", "2");
        properties.setProperty("c", "3");
        System.out.println(properties);

        String value = properties.getProperty("a");
        System.out.println(value);
        // 方法stringPropertyNames,将集合中的键存储到Set集合,类似于Map接口的方法keySet
        Set<String> set = properties.stringPropertyNames();
        for (String key : set) {
            System.out.println(key + "  " + properties.getProperty(key));
        }
    }
}

技术图片

技术图片

2.序列化流与反序列化流

用于从流中读取对象的

操作流 ObjectInputStream    称为 反序列化流

用于向流中写入对象的操作流 ObjectOutputStream   称为 序列化流

特点:用于操作对象。可以将对象写入到文件中,也可以从文件中读取对象。

 技术图片

 

10java进阶——IO2

标签:image   进阶   使用   get   public   int   列表   加载   传递   

原文地址:https://www.cnblogs.com/xinmomoyan/p/10972268.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!