Preperties类 

特点

  1.是Hashtable的子类,map集合中的方法都可以使用

  2.没有泛型,都是字符串

  3.是一个可以持久化的属性集

  4.有和流技术相结合的方法

2.常用方法

  load()在输入流中读取键值对

  store()把键值对写入输出流中

复制代码
public static void main(String[] args) throws IOException {
        //创建集合
        Properties pro=new Properties();
        //明确数据源
        FileInputStream fis=new FileInputStream("src/com/oracle/demo01/pro.properties");
        //将文件中的键值对读取到集合中
        pro.load(fis);
        System.out.println(pro);
    }
public static void main(String[] args) throws IOException {
        //创建集合
        Properties pro=new Properties();
        pro.put("name", "tom");
        pro.put("age", "20");
        //明确目的地
        FileWriter fw=new FileWriter("src/com/oracle/demo01/pro.properties",true);
        //将集合中的数据存储到文件中
        pro.store(fw, "This is a person");
    }
复制代码

2.序列化流和反序列化流

用于操作对象,把对象写入文件中,在文件中读取对象

3.ObjectOutputStream流

构造方法:ObjectOutputStream(字节输出流对象)

常用方法:writeObject()将指定对象写入文件

4.ObjectInputStream流

构造方法:ObjectOutputStream(字节输入流对象)

常用方法:readObject()读取文件中的对象

复制代码
public static void main(String[] args) throws IOException {
        Person p=new Person("张三",18);
        //明确目的地
        FileOutputStream fos=new FileOutputStream("/Users/air/io0803/person.txt");
        //创建序列化流
        ObjectOutputStream oos=new ObjectOutputStream(fos);
        //将对象写到文件中
        oos.writeObject(p);
        //释放资源
        oos.close();
    }
public static void main(String[] args) throws ClassNotFoundException, IOException {
        // 明确数据源
        FileInputStream fis = new FileInputStream("/Users/air/io0803/person.txt");
        //创建反序列化流
        ObjectInputStream ois=new ObjectInputStream(fis);
        //读出一个对象
        Person p=(Person) ois.readObject();
        System.out.println(p);
        //释放资源
        ois.close();
    }
复制代码

5.序列化接口

当一个对象要能被序列化,这个对象所属的类必须实现Serializable接口。否则会发生异常NotSerializableException异常。

Serializable标记接口。该接口给需要序列化的类,提供了一个序列版本号。

serialVersionUID. 该版本号的目的在于验证序列化的对象和对应类是否版本匹配。

当一个类要背序列化时,要指定一个版本号

private static final long serialVersionUID=123L;

6.transient关键字

当类中的一个属性不想被序列化时,用transient修饰或者静态

private transient String name;

posted on 2021-03-06 11:11  心灯不夜  阅读(97)  评论(0)    收藏  举报