10java进阶——IO2

Posted xinmomoyan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了10java进阶——IO2相关的知识,希望对你有一定的参考价值。

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", "[email protected]");

        // 键值对,存回文件,使用集合的方法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的主要内容,如果未能解决你的问题,请参考以下文章

我的Android进阶之旅NDK开发之在C++代码中使用Android Log打印日志,打印出C++的函数耗时以及代码片段耗时详情

Java IO2:RandomAccessFile

Atom编辑器入门到精通 Atom使用进阶

java代码在片段活动中不起作用

我的C语言学习进阶之旅解决 Visual Studio 2019 报错:错误 C4996 ‘fscanf‘: This function or variable may be unsafe.(代码片段

我的C语言学习进阶之旅解决 Visual Studio 2019 报错:错误 C4996 ‘fscanf‘: This function or variable may be unsafe.(代码片段