`
sjsky
  • 浏览: 903646 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Java对象序列化ObjectOutputStream和ObjectInputStream示例

    博客分类:
  • Java
阅读更多

         blog迁移至 :http://www.micmiu.com

 

Java中ObjectInputStream 与 ObjectOutputStream这两个包装类可用于输入流中读取对象类数据和将对象类型的数据写入到底层输入流 。ObjectInputStream 与 ObjectOutputStream 类所读写的对象必须实现了 Serializable 接口。需要注意的是:对象中的 transient 和 static 类型的成员变量不会被读取和写入

 

具体代码示例:

 

O bjectFileConvert.java

 

package michael.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.util.ArrayList;
import java.util.Date;
import java.util.List;


/**
 * @blog http://sjsky.iteye.com
 * @author Michael
 */
public class ObjectFileConvert {

    /**
     * 文件转化为Object
     * @param fileName
     * @return byte[]
     */
    public static Object file2Object(String fileName) {

        FileInputStream fis = null;
        ObjectInputStream ois = null;
        try {
            fis = new FileInputStream(fileName);
            ois = new ObjectInputStream(fis);
            Object object = ois.readObject();
            return object;
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (fis != null) {
                try {
                    fis.close();
                } catch (IOException e1) {
                    e1.printStackTrace();
                }
            }
            if (ois != null) {
                try {
                    ois.close();
                } catch (IOException e2) {
                    e2.printStackTrace();
                }
            }
        }
        return null;
    }

    /**
     * 把Object输出到文件
     * @param obj
     * @param outputFile
     */
    public static void object2File(Object obj, String outputFile) {
        ObjectOutputStream oos = null;
        FileOutputStream fos = null;
        try {
            fos = new FileOutputStream(new File(outputFile));
            oos = new ObjectOutputStream(fos);
            oos.writeObject(obj);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (oos != null) {
                try {
                    oos.close();
                } catch (IOException e1) {
                    e1.printStackTrace();
                }
            }
            if (fos != null) {
                try {
                    fos.close();
                } catch (IOException e2) {
                    e2.printStackTrace();
                }
            }
        }
    }

    /**
     * @param args
     */
    @SuppressWarnings("unchecked")
    public static void main(String[] args) {
        String fileName = "d:/test/object.obj";
        List<String> list = new ArrayList<String>();
        list.add("michael");
        list.add("大大");

        ObjectFileConvert.object2File(list, fileName);
        System.out.println("success write List<String> to file.");

        List<String> tmpList = (List<String>) ObjectFileConvert
                .file2Object(fileName);
        for (String tmp : tmpList) {
            System.out.println(tmp);
        }

        System.out.println("--------------------------------");

        fileName = "d:/test/uservo.obj";
        UserVo vo = new UserVo("michael", "大大", 18, new Date());

        ObjectFileConvert.object2File(vo, fileName);
        System.out.println("success write bean:UserVo to file.");

        UserVo tmpvo = (UserVo) ObjectFileConvert.file2Object(fileName);
        System.out.println("read bean:UserVo from file get info : " + tmpvo);

    }

}

 

UserVo.java

package michael.io;

import java.io.Serializable;
import java.util.Date;

/**
 * @blog http://sjsky.iteye.com
 * @author Michael
 */
public class UserVo implements Serializable {

    /**
     * serialVersionUID
     */
    private static final long serialVersionUID = -6846034858002233878L;

    private String userId;

    private String userName;

    private int age;

    private Date born;

    public UserVo() {
    }

    public UserVo(String userId, String userName, int age, Date born) {
        this.userId = userId;
        this.userName = userName;
        this.age = age;
        this.born = born;
    }

    /**
     * @return the userId
     */
    public String getUserId() {
        return userId;
    }

    /**
     * @return the userName
     */
    public String getUserName() {
        return userName;
    }

    /**
     * @return the age
     */
    public int getAge() {
        return age;
    }

    /**
     * @return the born
     */
    public Date getBorn() {
        return born;
    }

    /**
     * @param pUserId the userId to set
     */
    public void setUserId(String pUserId) {
        userId = pUserId;
    }

    /**
     * @param pUserName the userName to set
     */
    public void setUserName(String pUserName) {
        userName = pUserName;
    }

    /**
     * @param pAge the age to set
     */
    public void setAge(int pAge) {
        age = pAge;
    }

    /**
     * @param pBorn the born to set
     */
    public void setBorn(Date pBorn) {
        born = pBorn;
    }

    @Override
    public String toString() {
        return "userId=[ " + userId + " ] userName=[ " + userName + " ] age=[ "
                + age + " ] born=[ " + born + "] .";
    }

}
 
运行结果如下:
success write List<String> to file.
michael
大大

--------------------------------
success write bean:UserVo to file.
read bean:UserVo from file get info : userId=[ michael ] userName=[ 大大 ] age=[ 18 ] born=[ Mon Aug 01 13:49:33 CST 2011] .

 

本文连接:http://sjsky.iteye.com/blog/1137231

 

 

转载请注明来自:Michael's blog @ http://sjsky.iteye.com

----------------------------- 分 ------------------------------ 隔 ------------------------------ 线 ------------------------------

 

 

 

分享到:
评论

相关推荐

    java序列化与ObjectOutputStream和ObjectInputStream的实例详解

    主要介绍了java序列化与ObjectOutputStream和ObjectInputStream的实例详解的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下

    python-javaobj:python-javaobj是一个python库,提供了读取Java对象序列化ObjectOutputStream的函数

    python-javaobj 是一个 python 库,它提供了读取和写入(写入当前是 WIP)Java 对象的函数,序列化或将被ObjectOutputStream反序列化。 这种对象表示形式是 Java 世界中的标准数据交换格式。 javaobj 模块公开了...

    Java对象的序列化和反序列化实践

     把Java对象转换为字节序列的过程称为对象的序列化。  把字节序列恢复为Java对象的过程称为对象的反序列化。  对象的序列化主要有两种用途:  1)把对象的字节序列地保存到硬盘上,通常存放在一个文件中...

    Java高级程序设计实战教程第五章-Java序列化机制.pptx

    对象序列化是Java编程中的必备武器 Java高级程序设计实战教程第五章-Java序列化机制全文共15页,当前为第4页。 5.2.2 序列化应用 当你想把内存中的对象状态保存到一个文件中或者数据库中时候; 当你想用套接字在...

    使用Java序列化实现一个简单的文件备份工具.txt

    在该方法中,首先通过FileInputStream和ObjectInputStream读取源文件对象,然后通过ObjectOutputStream将读取的对象写入备份文件中。这个简单的示例代码展示了如何使用Java序列化来实现一个文件备份工具的简单功能,...

    实验一对象序列化1

    } 由于定义了二个接口方法,方法参数分别是ObjectOutputStream和ObjectInputStream类型对象,因此这二个接口方法必须通过实现该接口

    WEBSphere反序列化漏扫.rar

    Java 序列化是指把 Java 对象转换为字节序列的过程,便于保存在内存、文件、数据库中,ObjectOutputStream类的 writeObject() 方法可以实现序列化。反序列化是指把字节序列恢复为 Java 对象的过程,...

    Java-使用序列化保存对象数据到文件学习总结

    Java当中提供了一种序列化操作的方式,用一个字节序列来表示一个对象,该字节序列中保存了对象的属性、对象的数据、对象的类型。把字节序列化保存到文件中,就可以做到持久化保存数据内容。 1.2 如何将对象数据序列...

    序列化与反序列化

    反序列化:ObjectInputStream ObjectOutputStream介绍 (序列化) 构造: ObjectOutputStream(OutputStream out) 参数可以传入这两个:FileOutputStream,BufferedOutputStream 关键方法: writeObject(Object obj) 将...

    Java序列化

    Java中提供了一种序列化操作的方式,用一个字节序列化来表示一个对象,该字节序列化中保存了==【对象的属性】,【对象的类型】和【对象的数据】。把字节序列化保存到文件中,就可以做到持久化==保存数据内容。 从...

    序列化

    Java中提供了一种序列化操作的方式,用一个字节序列化来表示一个对象,该字节序列化中保存了【对象的属性】,【对象的类型】和【对象的数据】。把字节序列化保存到文件中,就可以做到持久化保存数据内容。 从文件中...

    J2SE中的序列化的认识

    只要我们的class 实现了java.io.Serializable接口,就可以利用ObjectOutputStream的writeObject()方法将一个对象序列化;利用ObjectInputStream的readObject()方法,可以返回读出的object对象。Serializable接口...

    JAVA笔记??序列化

     在Java中提供有ObjectInputStream与ObjectOutputStream这两个类用于序列化对象的操作。这两个类是用于存储和独缺对象的输入输出流类,只要把对象中的所有成员变量都存储起来,等于保存了这个对象,之后从保存的...

    ObjectInputStream 和 ObjectOutputStream 介绍_动力节点Java学院整理

    ObjectInputStream 和 ObjectOutputStream 的作用是,对基本数据和对象进行序列化操作支持。本文给大家详细介绍了ObjectInputStream 和 ObjectOutputStream的相关知识,感兴趣的朋友一起学习吧

    JAVA基础课程讲义

    JAVA对象的序列化和反序列化 161 为什么需要序列化和反序列化 161 对象的序列化主要有两种用途 161 序列化涉及的类和接口 162 序列化/反序列化的步骤和实例 162 综合的序列化和反序列化练习 163 JAVA.IO包相关流对象...

    JavaIOObjectStreams:FileInputStream 与 ObjectInputStream 和 ObjectOutputStream 的组合

    JavaIO对象流 FileInputStream 与 ObjectInputStream 和 ObjectOutputStream 的组合 奥利弗·缪尔

    socket objectoutputstream 传对象 例子

    socket objectoutputstream 传对象 例子 网上找的很好用,在网上留一份

    java.io常用方法(基本)

    我自己写的一些关于IO中的见解,可以用来参考。 File的增、删、改、查,FileReader和FileWriter类,BufferedReader和BufferedWriter类,ObjectOutputStream和ObjectInputStream类

    java上的即时通信

    import java.io.ObjectOutputStream; import java.io.ObjectInputStream; import java.io.IOException; import java.io.EOFException; import java.net.ServerSocket; import java.net.Socket; import java.awt....

    java-deserialize-recovery:该项目旨在恢复使用java.io.ObjectOutputStream创建的文件

    java-反序列化恢复 该项目旨在恢复使用java.io.ObjectOutputStream创建的文件

Global site tag (gtag.js) - Google Analytics