首页 > 开发 > Java > 正文

Java将对象写入文件读出_序列化与反序列化的实例

2024-07-13 10:11:03
字体:
来源:转载
供稿:网友

Java类中对象的序列化工作是通过ObjectOutputStream和ObjectInputStream来完成的。

写入:

File aFile=new File("e://c.txt");    Stu a=new Stu(1, "aa", "1");    FileOutputStream fileOutputStream=null;    try {      fileOutputStream = new FileOutputStream(aFile);      ObjectOutputStream objectOutputStream=new ObjectOutputStream(fileOutputStream);      objectOutputStream.writeObject(a);      objectOutputStream.flush();      objectOutputStream.close();    } catch (FileNotFoundException e) {      // TODO Auto-generated catch block      e.printStackTrace();    } catch (IOException e) {      // TODO Auto-generated catch block      e.printStackTrace();    }finally {      if(fileOutputStream!=null)      {        try {          fileOutputStream.close();        } catch (IOException e) {          // TODO Auto-generated catch block          e.printStackTrace();        }            }    }

读取:

FileInputStream fileInputStream=new FileInputStream(aFile);ObjectInputStream objectInputStream=new ObjectInputStream(fileInputStream);Stu s=(Stu)objectInputStream.readObject();System.out.println(s);

注意:

对于任何需要被序列化的对象,都必须要实现接口Serializable,它只是一个标识接口,本身没有任何成员,只是用来标识说明当前的实现类的对象可以被序列化。

如果在类中的一些属性,希望在对象序列化过程中不被序列化,使用关键字transient标注修饰就可以。当对象被序列化时,标注为transient的成员属性将会自动跳过。如果一个可序列化的对象包含某个不可序列化对象的引用,那么序列化操作会失败,会抛出NotSerializableException异常,那么将这个引用标记transient,就可以序列化了。

当一个对象被序列化时,只保存对象的非静态成员变量,不能保存任何的成员方法,静态的成员变量。

如果一个对象的成员变量是一个对象,那么这个对象的数据成员也会被保存还原,而且会是递归的方式。

以上这篇Java将对象写入文件读出_序列化与反序列化的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持VeVb武林网。


注:相关教程知识阅读请移步到JAVA教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表