登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

仙剑奇侠传的博客

羽化成仙

 
 
 

日志

 
 

ObjectOutputStreamAndObjectInputStream  

2011-07-19 01:06:51|  分类: JAVAIO |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

演示ObjectOutputStream

演示:ObjectInputStream

 

类:Rectangle 用来准备把此类对象写到文件中去

package com.wsysoft.lang.javaio;

 

import java.io.Serializable;

 

 

public class Rectangle implements Serializable {

    /**

     *

     */

    private static final long serialVersionUID = 3724059561952064331L;

    private java.lang.Double length;

    private java.lang.Double width;

 

    

    public Rectangle(Double length,Double width){

        this.length=length;

        this.width=width;

    }

    public Double getGirth(){

        return (length+width)*2;

        

    }

    public Double getArea(){

        return length*width;

    }

 

}

 

类:演示把对象写到外部存储,读外部存储加载对象

外部存储:文件、Socket、通道、内部数组、Cookie等等

如EJB的statefull session bean的钝化与激活、Request/Session等对象的getAttribute

setAttribute方法,都用到这两个对象或他的子对象。

EJB实现的核心机制就是这玩意

package com.wsysoft.lang;

 

/**

* Packagename: com.wsysoft.lang

* Filename: ObjectOutInStream.java

* Description: 此类演示把一个对象写到文件,然后从文件读出来

* ObjectOutputStream:代表对象输出流,原生对象与Object对象都可以用这个类来实现写入

* 有了 ObjectOutputStream基本上可以不上DataOuputStream

* 常用方法:writerObject(Object object);

* ObjectInputStream: 代表对象输入流。通过他可以从外部存储加载生成对象。

* 常用方法:Object readObject();

* Copyright: Copyright (c)2011

* @author: wsysoft@gmail.com

* @version: 1.0

* Create at: 2011-7-18 下午10:06:57

*

* Modification History:

* Date Author Version Description

* ------------------------------------------------------------------

* 2011-7-18 wsysoft@gmail.com 1.0

*/

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.ObjectInputStream;

import java.io.ObjectOutputStream;

 

 

import com.wsysoft.lang.javaio.Rectangle;

public class ObjectOutInStream {

 

    private static File objFile=new File("./objFile.dat");

    

    public static void writeObjToFile(Object obj) {

 

        FileOutputStream fOutputStream = null;

        ObjectOutputStream ojbOutStream = null;

        

        try {

            fOutputStream = new FileOutputStream(objFile);

            ojbOutStream = new ObjectOutputStream(fOutputStream);

            // 写对象

            ojbOutStream.writeObject((Rectangle) obj);

            System.out.println("写一个对象到文件完成");

 

        } catch (FileNotFoundException e1) {

            // TODO Auto-generated catch block

            e1.printStackTrace();

        } catch (IOException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        } finally {

            if (ojbOutStream != null) {

                try {

                    ojbOutStream.close();

                } catch (IOException e) {

 

                    e.printStackTrace();

                }

            }

            if (fOutputStream != null) {

                try {

                    fOutputStream.close();

                } catch (IOException e) {

 

                    e.printStackTrace();

                }

            }

        }

 

    }

    

    //从文件装载一个对象

    public static Object readObjFromFile() {

        Object obj = null;

        try {

            FileInputStream fInputStream = new FileInputStream(objFile);

            ObjectInputStream objInputStream = new ObjectInputStream(

                    fInputStream);

            obj = objInputStream.readObject();

            System.out.println("从文件中装载对象到内存");

            if (objInputStream != null) {

                objInputStream.close();

            }

            if (objInputStream != null) {

                objInputStream.close();

            }

 

        } 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();

        } finally {

 

        }

        return obj;

 

    }

    /**

     * {方法的功能/动作描述}

     * @param {引入参数名} {引入参数说明}

     * @return {返回参数名} {返回参数说明}

     * @exception {说明在某情况下,将发生什么异常}

     */

 

    public static void main(String[] args) {

 

        Rectangle rect = new Rectangle(10d, 10d);

        Rectangle anotherRect;

        writeObjToFile(rect);

        anotherRect = (Rectangle) readObjFromFile();

        System.out.println("面积:" + anotherRect.getArea());

        System.out.println("周长:" + anotherRect.getGirth());

 

    }

 

}

  评论这张
 
阅读(502)| 评论(1)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018