史上最全IO框架七(对象流:属于字节流)

来源:互联网 发布:淘宝直播电脑怎么看 编辑:程序博客网 时间:2024/04/29 22:48

package com.itheima.filedemo;

/**
* 类通过实现java.io.Serialzable接口以启用序列化功能(此接口为标记接口,乜有任何方法,类似克隆,)
*/
import java.io.Serializable;

public class Dog implements Serializable{

private String name;//private transient int age;//使用transient关键字声明的属性讲不会被序列化private int 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;}public Dog(String name, int age) {    super();    this.name = name;    this.age = age;}public Dog() {    super();    // TODO Auto-generated constructor stub}@Overridepublic String toString() {    return "Dog [name=" + name + ", age=" + age + "]";}

}

package com.itheima.filedemo;

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.io.OutputStream;

/**
* 对象流
* @author Administrator
*
*/
public class ObjectStreamDemo {

public static void main(String[] args) {    writeObject1();    readObject1();    writeObject2();    readObject2();}/** * 使用ObjectOutputStream把对象写入文件中(序列化) */public static void writeObject1(){    try {        OutputStream out = new FileOutputStream("E:\\obj.temp");        //根据字节输出流对象构造一个对象流对象        ObjectOutputStream oos = new ObjectOutputStream(out);        //输出数据        oos.writeInt(100);        //构造一个对象        Dog dog = new Dog("小白", 10);        //向文件中写入一个对象        oos.writeObject(dog);        //关闭流        oos.close();        out.close();    } catch (FileNotFoundException e) {        // TODO Auto-generated catch block        e.printStackTrace();    } catch (IOException e) {        // TODO Auto-generated catch block        e.printStackTrace();    }}/** * 使用ObjectInputStream读取文件中的对象 */public static void readObject1(){    try {        InputStream is = new FileInputStream("E:\\obj.temp");        //根据字节输入流构造一个对象流对象        ObjectInputStream ois = new ObjectInputStream(is);        //读取一个整数(读取时必须按照顺序)        int num = ois.readInt();        //读取一个兑现        Dog dog = (Dog) ois.readObject();        //关闭流,输出        ois.close();        is.close();        //输出        System.out.println("num=" + num);        System.out.println(dog);    } catch (FileNotFoundException e) {        // TODO Auto-generated catch block        e.printStackTrace();    } catch (IOException e) {        // TODO Auto-generated catch block        e.printStackTrace();    } catch (ClassNotFoundException e) {        // TODO Auto-generated catch block        e.printStackTrace();    }}/** * 将一组对象序列化到文件中,(采用对象数组) */public static void writeObject2(){    try {        OutputStream os = new FileOutputStream("E:\\obj.temp");        ObjectOutputStream oos = new ObjectOutputStream(os);        //对象数组        Dog[] dogs = new Dog[]{new Dog("小白",8),new Dog("小黑",2),new Dog("小红",4)};        //向文件中写入多个对象        oos.writeObject(dogs);        //关闭流        oos.close();        os.close();    } catch (FileNotFoundException e) {        // TODO Auto-generated catch block        e.printStackTrace();    } catch (IOException e) {        // TODO Auto-generated catch block        e.printStackTrace();    }}/** * 从文件中读取数组对象 */public static void readObject2(){    try {        InputStream is = new FileInputStream("E:\\obj.temp");        ObjectInputStream ois = new ObjectInputStream(is);        Dog[] dogs = (Dog[]) ois.readObject();        //关闭        ois.close();        is.close();        for (Dog dog : dogs) {            System.out.println(dog);        }    } catch (FileNotFoundException e) {        // TODO Auto-generated catch block        e.printStackTrace();    } catch (IOException e) {        // TODO Auto-generated catch block        e.printStackTrace();    } catch (ClassNotFoundException e) {        // TODO Auto-generated catch block        e.printStackTrace();    }}

}

0 0
原创粉丝点击