J2SE中的序列化的认识_JSP编程

java中处处体现着简单的程序设计风格,序列化作为最常用的功能之一,在java中的设计尤为“简单”。在ObjectInputStream 和ObjectOutputStream的帮助下,我们可以轻松的实现序列化。

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

  以下是一个例子,它能给我们一个感性的认识:

  Serial实现了就java.io.Serializable接口,是需要序列化的类。我们首先构造一个Serial的对象serial1然后将其保存(序列化)在一个文件中,而后再将其读出(反序列化),并打印其内容。

  package Stream;

  /**

  * @author favo yang

  */

  import java.io.*;

  public class Serial implements Serializable {
  int company_id;
  String company_addr;
  boolean company_flag;
  public Serial(){}//不同于c++,没有也可以
  public Serial(int company_id,String company_addr,boolean company_flag) {
  this.company_id=company_id;
  this.company_addr=company_addr;
  this.company_flag=company_flag;
  }

  public static void main(String[] args) {
  Serial serial1 = new Serial(752,"dayer street #5 building 02-287",false);//构造一个新的对象
  FileInputStream in=null;
  FileOutputStream out=null;
  ObjectInputStream oin=null;
  ObjectOutputStream oout=null;

  try {
   out = new FileOutputStream("5.txt");
   oout = new ObjectOutputStream(out);
   serial1.serialize(oout);//序列化
   oout.close();
   oout=null;
   in = new FileInputStream("5.txt");
   oin = new ObjectInputStream(in);
   Serial serial2 = Serial.deserialize(oin);//反序列化
   System.out.println(serial2);//打印结果
  } catch (Exception ex){
   ex.printStackTrace();
  } finally{
   try {
    if (in != null) {
     in.close();
    }
    if (oin != null) {
     oin.close();
    }
    if (out != null) {
     out.close();
    }
    if (oout != null) {
     oout.close();
    }
   } catch (IOException ex1) {
    ex1.printStackTrace();
   }
  }
  }

  /**
  * deserialize
  */

  public static Serial deserialize(ObjectInputStream oin) throws Exception{
  Serial s=(Serial)oin.readObject();
  return s;
  }

  public String toString() {
  return "DATA: "+company_id+" "+company_addr+" "+company_flag;
  }

  /**
  * serialize
  */

  public void serialize(ObjectOutputStream oout) throws Exception{
  oout.writeObject(this);
  }
  }

  运行结果:

  DATA: 752 dayer street #5 building 02-287 false
  
  正确打印了结果。

时间: 2024-08-24 16:48:12

J2SE中的序列化的认识_JSP编程的相关文章

J2SE中的序列化之继承_JSP编程

当一个父类实现Serializable接口后,他的子类都将自动的实现序列化. 以下验证了这一点: package Serial; import java.io.Serializable; public class SuperC implements Serializable {//父类实现了序列化 int supervalue; public SuperC(int supervalue) { this.supervalue = supervalue; } public String toStri

Java中基本数据类型与流_JSP编程

Java中除了二进制文件和使用文本文件外还有基于Data的数据操作,这里的Data指的是Java的基本数据类型和String.基本数据类型包括byte.int.char.long.float.double.boolean和short. 说到Java的基本数据类型必须谈到的两个类是DataInputStream和DataOutputStream.它们提供了对Java基本数据类型的操作,但是这些方法事实上是在两个重要的接口中定义的DataInput和DataOutput,它们的功能就是把二进制的字节

谈谈J2SE中的序列化之当序列化遭遇继承

j2se|继承 运行结果证明了这种方法是正确的.在此处我们用到了writeObject/ readObject方法,这对方法如果存在的话,序列化时就会被调用,以代替默认的行为(以后还要探讨,先了解这么多).我们在序列化时,首先调用了ObjectOutputStream的defaultWriteObject,它使用默认的序列化行为,然后序列化父类的域:反序列化的时候也一样. 归纳一下: 目的 行为 为一个实现Serializable接口的父类,编写一个能够序列化的子类 子类将自动的实现序列化 为一

对J2SE中的序列化的一个感性的认识

java中处处体现着简单的程序设计风格,序列化作为最常用的功能之一,在java中的设计尤为"简单".在ObjectInputStream 和ObjectOutputStream的帮助下,我们可以轻松的实现序列化. 只要我们的class 实现了java.io.Serializable接口,就可以利用ObjectOutputStream的writeObject()方法将一个对象序列化:利用ObjectInputStream的readObject()方法,可以返回读出的object对象.Se

Eclipse中自动重构实现探索_JSP编程

本文用eclipse的自动重构功能对一个程序实例进行重构,目的是探索Eclipse自动重构可以在多大程度上辅助重构这个过程.程序实例使用<Refactoring:Improving the Design of Existing Code>一书中的例子. Eclipse的自动重构功能能够很好地支持各种程序元素的重命名,并自动更新相关的引用.Eclipse能够支持方法.字段在类之间移动,并自动更新引用.Eclipse较好地支持内联字段.函数的更新替换.Eclipse较好地支持抽取方法.变量等程序元

谈谈J2SE中的序列化(三)

何时接受默认的java序列化行为首先要了解java默认的序列化行为,java将一切关于对象的信息都保存了下了,也就是说,有些时候那些不需要保存的也被保存了下来.一般情况下,我们仅仅需要保存逻辑数据就可以了.不需要保存的数据我们可以用关键字transient标出.以下是一个例子:import java.io.*;public class Serial implements Serializable { int company_id; String company_addr; transient b

jsp中调用java代码小结_JSP编程

原封不动的传送给客户端有两个小例外: 1. 如果想传送 <%或%>, 由于它跟jsp的特殊符号一致, 所以必须使用转义字符转义, <\% 或 %\>2. 如果想传送注释, 在 jsp 编辑页面中出现, 而在生成的html文档不出现, 那么我们要使用 <%-- --%>, 而 <!-- --> 这种形式会原封不动的传递给客户端. jsp 调用动态代码策略 使用 mvc, 由一个 servlet 负责处理最初的请求, 查找数据, 并将结果存储在 bean中, 然

浅析Java中Data类的应用_JSP编程

Date 类从Java 开发包(JDK) 1.0 就开始进化, 当时它只包含了几个取得或者设置一个日期数据的各个部分的方法, 比如说月, 日, 和年.这些方法现在遭到了批评并且已经被转移到了Calendar类里去了, 我们将在本文中进一步讨论它. 这种改进旨在更好的处理日期数据的国际化格式. 就象在JDK 1.1中一样, Date 类实际上只是一个包裹类, 它包含的是一个长整型数据, 表示的是从GMT(格林尼治标准时间)1970年, 1 月 1日00:00:00这一刻之前或者是之后经历的毫秒数.

jsp中获取当前目录的方法_JSP编程

本文实例讲述了jsp中获取当前目录的实现方法,分享给大家供大家参考.具体实现方法如下: 1.利用System.getProperty()函数获取当前路径: 复制代码 代码如下: System.out.println(System.getProperty("user.dir"));//user.dir指定了当前的路径 2.使用File提供的函数获取当前路径: 复制代码 代码如下: File directory = new File("");//设定为当前文件夹 try