您的位置:首页 > 运维架构 > 网站架构

【转】Java的Serializable处理 - 皇马啸西风的一亩三分地 - JavaEye技术网站

2009-12-15 02:42 369 查看
Java的Serializable处理
关键字: java serializable    java继承serislizable接口,简单说就是为了保存在内存中的各种对象的状态(也就是实例变量,不是方法),并且可以把保存的对象状态再读出来。实现了Java对象的序列化。
在一下情况可以考虑使用序列化:
    a)当你想把的内存中的对象状态保存到一个文件中或者数据库中时候;
    b)当你想用套接字在网络上传送对象的时候;
    c)当你想通过RMI传输对象的时候;
示例:
Java代码


public class Order implements java.io.Serializable {  
private Long id;  
private String code;  
private String name;  

public class Order implements java.io.Serializable {
private Long id;
private String code;
private String name;
}


将order对象写入流中:

Java代码



public InputStream getOrderInfoAsStream(Order order) {  

        InputStream ret = null;  

        ByteArrayOutputStream baos = null;  

        ObjectOutputStream ous = null;  

if (order == null) {  

return ret;  

        }  

try {  

                                           baos = new ByteArrayOutputStream();  

                   ous = new ObjectOutputStream(baos);  

                               ous.writeObject(order);  

                   ret = FileUtil.getInputStreamFromBytes(baos.toByteArray());  

        } catch (Exception e) {  

            e.printStackTrace();  

        } finally {  

try {  

if (baos != null) {  

                    baos.close();  

                }  

if (ous != null) {  

                    ous.close();  

                }  

            } catch (Exception e) {  

            }  

        }  

return ret;  

    } 

public InputStream getOrderInfoAsStream(Order order) {
InputStream ret = null;
ByteArrayOutputStream baos = null;
ObjectOutputStream ous = null;

if (order == null) {
return ret;
}
try {
baos = new ByteArrayOutputStream();
ous = new ObjectOutputStream(baos);
ous.writeObject(order);

ret = FileUtil.getInputStreamFromBytes(baos.toByteArray());

} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (baos != null) {
baos.close();
}
if (ous != null) {
ous.close();
}
} catch (Exception e) {
}
}
return ret;
}


将对象从流中读出:

Java代码



public Order getOrder(InputStream is) {  

        Order ret = null;  

        ObjectInputStream ois = null;  

try {  

if (is != null) {  

                ois = new ObjectInputStream(is);  

                ret = (Order) ois.readObject();  

            }  

        } catch (Exception e) {  

            e.printStackTrace();  

        } finally {  

try {  

if (ois != null) {  

                    ois.close();  

                }  

            } catch (Exception e) {  

            }  

        }  

return ret;  

    } 

Java的Serializable处理 - 皇马啸西风的一亩三分地 - JavaEye技术网站
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: