Java——IO流(序列流)

序列化与反序列化
游戏存档:目的是为了游戏下次上号数据的保存

package com.yy.otherio;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;

import com.yy.bean.Person;

public class Demo3_ObjectOutputStream {

    /**
     * 序列化:将对象写到文件上
     * @throws IOException 
     * @throws ClassNotFoundException 
     * 
     * ObjectInputStream 
     * 对象输入流,是反序列化
     * */
    public static void main(String[] args) throws IOException, ClassNotFoundException {
        demo1();
        demo2();
        demo3();
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream("b.txt"));
        ArrayList<Person> list = (ArrayList<Person>) ois.readObject();                  //将集合对象第一次读取

        for (Person person : list) {
            System.out.println(person);
        }

        ois.close();


    }

    private static void demo3() throws IOException, FileNotFoundException {
        Person p1 = new Person("张三",23);
        Person p2 = new Person("李四",24);
        Person p3 = new Person("王五",25);
        Person p4 = new Person("赵六",26);


        ArrayList<Person> list= new ArrayList<>();
        list.add(p1);
        list.add(p2);
        list.add(p3);
        list.add(p4);

        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("b.txt"));
        oos.writeObject(list);
        oos.close();
    }

    private static void demo2() throws IOException, FileNotFoundException, ClassNotFoundException {
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream("b.txt"));
        Person p1 = (Person) ois.readObject();
        Person p2 = (Person) ois.readObject();

        System.out.println(p1);
        System.out.println(p2);
        ois.close();
    }

    private static void demo1() throws IOException, FileNotFoundException {
        Person p1 = new Person("张三",23);
        Person p2 = new Person("李四",24);

        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("b.txt"));
        oos.writeObject(p1);
        oos.writeObject(p2);

        oos.close();


//      FileOutputStream fos = new FileOutputStream("a.txt");
//      fos.write(p1);
    }

}
package com.yy.bean;

import java.io.Serializable;

public class Person implements Serializable{
    private String name;
    private int age;
    public Person() {
        super();

    }
    public Person(String name, int age) {
        super();
        this.name = name;
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    @Override
    public String toString() {
        return "Person [name=" + name + ", age=" + age + "]";
    }


}

猜你喜欢

转载自blog.csdn.net/qq_41264055/article/details/81206430