快速业务通道

浅谈Java的输入输出流 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23
用,不过在平时应用中,它也是很有用的一种技术。

所有需要实现对象序列化的对象必须首先实现Serializable接口。下面看一个例子:

import java.io.*; import java.util.*;    public class Logon implements Serializable {     private Date date = new Date ();     private String username;     private transient String password;     Logon (String name, String pwd) {         username = name;         password = pwd;     }     public String toString () {         String pwd = (password == null) ? " (n/a)" : password;         return "logon info: \n " + "username: " + username + "\n date: " + date + "\n password: " + pwd;     }     public static void main (String[] args) throws IOException, ClassNotFoundException {         Logon a = new Logon ("Morgan", "morgan83");         System.out.println ( "logon a = " + a);         ObjectOutputStream o = new ObjectOutputStream ( new FileOutputStream ("Logon.out"));         o.writeObject (a);         o.close ();    int seconds = 5;         long t = System.currentTimeMillis ()+ seconds * 1000;         while (System.currentTimeMillis () < t) ;         ObjectInputStream in = new ObjectInputStream ( new FileInputStream ("Logon.out"));         System.out.println ( "Recovering object at " + new Date ());         a = (Logon)in.readObject ();         System.out.println ("logon a = " + a);     } }

类Logon是一个记录登录信息的类,包括用户名和密码。首先它实现了接口Serializable,这就标志着它可以被序列化。之后再main方法里ObjectOutputStream o = new ObjectOutputStream ( new FileOutputStream ("Logon.out"));新建一个对象输出流包装一个文件流,表示对象序列化的目的地是文件Logon.out。然后用方法writeObject开始写入。想要还原的时候也很简单ObjectInputStream in = new ObjectInputStream ( new FileInputStream ("Logon.out"));新建一个对象输入流以文件流Logon.out为参数,之后调用readObject方法就可以了。

需要说明一点,对象序列化有一个神奇之处就是,它建立了一张对象网,将当前要序列化的对象中所持有的引用指向的对象都包含起来一起写入到文件,更为奇妙的是,如果你一次序列化了好几个对象,它们中相同的内容将会被共享写入。这的确是一个非常好的机制。它可以用来实现深层拷贝。

关键字transient在这里表示当前内容将不被序列化,比如例子中的密码,需要保密,所以没有被写入文件。

对Java的输入输出功能,就浅浅的介绍到这里,本文的目的只是开一个好头,希望能让大家对Java输入输出流有个基本的认识。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号