java序列化与反序列化操作实例分析

本文实例分析了java序列化与反序列化操作。分享给大家供大家参考,具体如下:

概述:

Java序列化是指把Java对象转换为字节序列的过程;而Java反序列化是指把字节序列恢复为Java对象的过程。

示例代码:

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 java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
public class Test {
  /**
   * @param args
   */
  public static void main(String[] args) {
    try {
      ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("D:/objectFile.obj"));
      Customer customer = new Customer("中国人",23);
      out.writeObject("你好!");
      out.writeObject(new Date());
      out.writeObject(customer);
      out.writeInt(123);
      List list = new ArrayList();
      int i =0 ;
      while(i<100) {
        Customer customer2 = new Customer("中国人",i);
        list.add(customer2);
        i++;
      }
      HashMap hashMap = new HashMap();
      hashMap.put("customer", list);
      out.writeObject(hashMap);
      out.close();
      ObjectInputStream in = new ObjectInputStream(new FileInputStream("D:/objectFile.obj"));
      System.out.println("obj1= " + (String) in.readObject());
      System.out.println("obj2= " + (Date) in.readObject());
      Customer obj3 = (Customer) in.readObject();
      System.out.println("obj3= " + obj3);
      int obj4 = in.readInt();
      System.out.println("obj4= " + obj4);
      Object obj5 = in.readObject();
      System.out.println(obj5);
      HashMap hash_map = (HashMap)obj5;
      List l = (List) hash_map.get("customer");
      System.out.println("size: " + l.size());
      for(int ii=0; ii<l.size() -1 ; ii++) {
        Customer c = (Customer)l.get(ii);
        System.out.println(c.getName());
        System.out.println(c.getAge());
      }
      in.close();
    } catch (FileNotFoundException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    } catch (ClassNotFoundException e) {
      e.printStackTrace();
    }
  }
}
class Customer implements Serializable {
  private static final long serialVersionUID = 1L;
  private String name;
  private int age;
  public String getName() {
    return name;
  }
  public int getAge() {
    return age;
  }
  public Customer(String name, int age) {
    this.name = name;
    this.age = age;
  }
  public String toString() {
    return "name=" + name + ", age=" + age;
  }
}

希望本文所述对大家java程序设计有所帮助。

(0)

相关推荐

  • java对象序列化与反序列化的默认格式和json格式使用示例

    默认格式 复制代码 代码如下: public class MyClass implements Serializable{...} 序列化: 复制代码 代码如下: ObjectOutputStream output = new ObjectOutputStream(new FileOutputStream(outputPath)); output.writeObject(myObject); 反序列化: 复制代码 代码如下: ObjectInputStream input = new Objec

  • java对象的序列化和反序列化

    本文实例为大家分享了java对象的序列化和反序列化,供大家参考,具体内容如下 1. 什么是序列化        将对象转换为字节流保存起来,比如保存到文件里,并在以后还原这个对象,这种机制叫做对象序列化.(补充一句:把对象保存到永久存储设备上称为持久化) 2. 怎么实现序列化        需要实现Serializable接口,java对象实现了这个接口就表明这个这个类的对象是可序列化的. 3. 序列化的注意事项 (1) 当一个对象序列化时,只能保存对象的非静态成员变量,不能保存方法和静态成员变

  • Java实现序列化与反序列化的简单示例

    1.Java序列化与反序列化 Java序列化是指把Java对象转换为字节序列的过程:而Java反序列化是指把字节序列恢复为Java对象的过程. 2.为什么需要序列化与反序列化 我们知道,当两个进程进行远程通信时,可以相互发送各种类型的数据,包括文本.图片.音频.视频等, 而这些数据都会以二进制序列的形式在网络上传送.那么当两个Java进程进行通信时,能否实现进程间的对象传送呢?答案是可以的.如何做到呢?这就需要Java序列化与反序列化了.换句话说,一方面,发送方需要把这个Java对象转换为字节序

  • java 对象的序列化和反序列化详细介绍

    最近周末,对java 的基础知识做了一个整理,其中java 序列化和反序列化的资料进行了详细整理,这里做个笔记,希望也能帮助到读到此文的朋友. 一.序列化和反序列化的概念 把对象转换为字节序列的过程称为对象的序列化. 把字节序列恢复为对象的过程称为对象的反序列化. 对象的序列化主要有两种用途: 1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中: 2) 在网络上传送对象的字节序列. 在很多应用中,需要对某些对象进行序列化,让它们离开内存空间,入住物理硬盘,以便长期保存.比如最常见的是

  • Java 序列化和反序列化实例详解

    Java 序列化和反序列化实例详解 在分布式应用中,对象只有经过序列化才能在各个分布式组件之间传输,这就涉及到两个方面的技术-发送者将对象序列化,接受者将对象反序列化,下面就是一个很好的例子! 1.实体-Employee import java.io.Serializable; public class Employee implements Serializable{ /** * */ private static final long serialVersionUID = 1L; publi

  • java序列化和java反序列化示例

    序列化一般应用与以下场景之中:1.永久性保存对象,把对象通过序列化字节流保存到本地文件中:2.通过序列化在网络中传输对象3.通过序列化在进程间传递对象 复制代码 代码如下: import java.io.Serializable;import java.io.FileOutputStream;import java.io.IOException;import java.io.ObjectOutputStream; public class javaSerializable_fun { /**  

  • Java中对象序列化与反序列化详解

    本文实例讲述了Java中对象序列化与反序列化.分享给大家供大家参考.具体如下: 一.简介 对象序列化(Serializable)是指将对象转换为字节序列的过程,而反序列化则是根据字节序列恢复对象的过程. 序列化一般用于以下场景: 1.永久性保存对象,保存对象的字节序列到本地文件中: 2.通过序列化对象在网络中传递对象: 3.通过序列化在进程间传递对象. 对象所属的类必须实现Serializable或是Externalizable接口才能被序列化.对实现了Serializable接口的类,其序列化

  • 理解Java的序列化与反序列化

    文章主要涉及到以下几个问题: 怎么实现Java的序列化 为什么实现了java.io.Serializable接口才能被序列化 transient的作用是什么 怎么自定义序列化策略 自定义的序列化策略是如何被调用的 ArrayList对序列化的实现有什么好处 一.Java对象的序列化 Java平台允许我们在内存中创建可复用的Java对象,但一般情况下,只有当JVM处于运行时,这些对象才可能存在,即,这些对象的生命周期不会比JVM的生命周期更长.但在现实应用中,就可能要求在JVM停止运行之后能够保存

  • 深入理解Java对象的序列化与反序列化的应用

    当两个进程在进行远程通信时,彼此可以发送各种类型的数据.无论是何种类型的数据,都会以二进制序列的形式在网络上传送.发送方需要把这个Java对象转换为字节序列,才能在网络上传送:接收方则需要把字节序列再恢复为Java对象. 把Java对象转换为字节序列的过程称为对象的序列化.把字节序列恢复为Java对象的过程称为对象的反序列化.对象的序列化主要有两种用途:1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中:2) 在网络上传送对象的字节序列.一. JDK类库中的序列化APIjava.io

  • java序列化与反序列化操作实例分析

    本文实例分析了java序列化与反序列化操作.分享给大家供大家参考,具体如下: 概述: Java序列化是指把Java对象转换为字节序列的过程;而Java反序列化是指把字节序列恢复为Java对象的过程. 示例代码: import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.i

  • Java序列化与反序列化的实例分析讲解

    序列化与反序列化 Java对象是有生命周期的,当生命周期结束它就会被回收,但是可以通过将其转换为字节序列永久保存下来或者通过网络传输给另一方. 把对象转换为字节序列的过程称为对象的序列化:把字节序列恢复为对象的过程称为对象的反序列化. Serializable接口 一个类实现java.io.Serializable接口就可以被序列化或者反序列化.实际上,Serializable接口中没有任何变量和方法,它只是一个标识.如果没有实现这个接口,在序列化或者反序列化时会抛出NotSerializabl

  • PHP常见的序列化与反序列化操作实例分析

    本文实例讲述了PHP常见的序列化与反序列化操作.分享给大家供大家参考,具体如下: 1.概念 serialize() 把变量和它们的值编码成文本形式 unserialize() 恢复原先变量 2.序列化例子 输入输出 $arr=array(); $arr['name']='张三'; $arr['age']='22'; $arr['sex']='男'; $arr['phone']='123456789'; $arr['address']='上海市浦东新区'; var_dump($arr); arra

  • PHP中SERIALIZE和JSON的序列化与反序列化操作区别分析

    本文实例讲述了PHP中SERIALIZE和JSON的序列化与反序列化操作区别.分享给大家供大家参考,具体如下: PHP中SERIALIZE和JSON序列化与反序列化区别是什么呢,对于这个问题我们可以和小编一起来看看,具体的操作细节如下所示. 在PHP中,serialize和json两种方式对一个对象或数组进行序列化或反序列化有什么区别呢? 假设一个对象和一个数组: $web = new stdClass; $web->site = 'tantengvip'; $web->owner = 'tu

  • java 序列化与反序列化的实例详解

     1.Java序列化与反序列化 Java序列化是指把Java对象转换为字节序列的过程:而Java反序列化是指把字节序列恢复为Java对象的过程.  2.为什么需要序列化与反序列化 我们知道,当两个进程进行远程通信时,可以相互发送各种类型的数据,包括文本.图片.音频.视频等, 而这些数据都会以二进制序列的形式在网络上传送.那么当两个Java进程进行通信时,能否实现进程间的对象传送呢?答案是可以的.如何做到呢?这就需要Java序列化与反序列化了.换句话说,一方面,发送方需要把这个Java对象转换为字

  • Java中join线程操作实例分析

    本文实例讲述了Java中join线程操作.分享给大家供大家参考,具体如下: 一 点睛 Tread提供了让一个线程等待另外一个线程完成的方法--join()方法.当在某个程序执行流中调用其他线程的join()方法时,调用线程将被阻塞,直到被join()方法加入的join线程执行完后为止. join()方法通常由使用线程的程序调用,以将大问题划分成许多小问题,每个小问题分配一个线程.当所有小问题都得到处理后,再调用主线程来进一步操作. 二 代码 public class JoinThread ext

  • Java的覆写操作实例分析

    本文实例讲述了Java的覆写操作.分享给大家供大家参考,具体如下: 一 属性覆写 1 点睛 所谓属性覆写,指的是子类定义和父类定义之中名称相同的属性. 2 代码 class Book { String info = "Hello World." ; // 如果加上private,1处的代码就会编译不过 } class ComputerBook extends Book { int info = 100 ; // 属性名称相同 public void print() { System.o

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

    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); Objec

  • Java原生序列化和反序列化代码实例

    这篇文章主要介绍了Java原生序列化和反序列化代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 写一个Java原生的序列化和反序列化的DEMO. 需序列化的类: package com.nicchagil.nativeserialize; import java.io.Serializable; public class User implements Serializable { private static final long se

随机推荐