编程语言
首页 > 编程语言> > 10java进阶——IO2

10java进阶——IO2

作者:互联网

1. Properties类

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

特点:

  1. Hashtable的子类,map集合中的方法都可以用。
  2. 该集合没有泛型。键值都是字符串。
  3. 它是一个可以持久化的属性集。键值可以存储到集合中,也可以存储到持久化的设备(硬盘、U盘、光盘)上。键值的来源也可以是持久化的设备。
  4. 有和流技术相结合的方法。

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,properties,setProperty,键值,集合,Properties,IO2,out
来源: https://www.cnblogs.com/xinmomoyan/p/10972268.html