java 对象输入输出流

来源:互联网 发布:电视直播大全软件 编辑:程序博客网 时间:2024/05/02 16:41

          对象的输入输出流的作用: 用于写入对象 的信息读取对象的信息。 对象的持久化。 比如:用户信息。
   
           ObjectInputStream   : 对象输入流
   
           ObjectOutPutStream  :对象输出流  
   
         对象输入输出出流的使用注意点:
       1.如果想将一个对象写入到磁盘中,那么对象所属的类必须要进行序列化实现Serializable接口,Serializable接口没有任何方法 ,是一个标记接口
       2.如果对象所属的类的成员变量发生改变,你在读取原来的对象是就会报错,如果想要解决报错,保证serialVersionUID是唯一。
       3.如果你不想将某些信息存入到磁盘 就可以同过transient关键字修饰成员变量
       4.如果一个类中引用了另外的一个类,那么另外的这个类也要实现Serializable接口。

 

 

package com.beiwo.io;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.io.Serializable;class Cat implements Serializable {        private static final long serialVersionUID = 1L; // 保证所取对象信息唯一        String name;    public Cat(String name) {        // TODO 自动生成的构造函数存根        this.name = name;    }        @Override    public String toString() {        // TODO 自动生成的方法存根        return "cat.name" + this.name;    }}class Person implements Serializable {        private static final long serialVersionUID = 1L; // 保证所取信息唯一        String name;    int age;    int id;    String sex;    // 如果不想把某些信息存入磁盘中 ,则需要通过transient关键字修饰成员变量    transient String password;     Cat cat;    // 构造方法    public Person(String name, int age, int id, String password, Cat cat){        this.name = name;        this.age = age;        this.id = id;        this.password = password;        this.cat = cat;    }}public class demo4 {    /**     * @param args     * @throws IOException      * @throws ClassNotFoundException      */    public static void main(String[] args) throws IOException, ClassNotFoundException {        // 调用方法        writeObject();        readObject();    }    // 读取数据到磁盘中    public static void readObject() throws IOException, ClassNotFoundException {        // TODO 自动生成的方法存根        // 找到目标文件        File file = new File("C:\\Users\\cdlx2016\\Desktop\\2\\cc.txt");        // 建立通道        FileInputStream inputStream = new FileInputStream(file);        // 创建对象输入流        ObjectInputStream objectInputStream = new ObjectInputStream(inputStream);        // 读取数据        Person person = (Person)objectInputStream.readObject();                // 打印数据        System.out.println("name: " + person.name + " age: " + person.age + " id: " + person.id + " 密码:" + person.password + " cat: " + person.cat);                // 关闭数据        objectInputStream.close();            }        // 写入对象    private static void writeObject() throws IOException {        // 找到目标文件        File file = new File("C:\\Users\\cdlx2016\\Desktop\\2\\cc.txt");        // 建立通道        FileOutputStream fileOutputStream = new FileOutputStream(file);        // 创建对象输出流        ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);        // 创建对象        Person person = new Person("李四", 20, 1203, "369852", new Cat("大肥"));        // 写入数据        objectOutputStream.writeObject(person);        // 关闭流        objectOutputStream.close();            }}

 

0 0
原创粉丝点击