`

Java知识积累:序列化、反序列化

阅读更多

http://fangguanhong.iteye.com/blog/1976911

 

import java.io.Serializable;

class Customer implements Serializable {
    private static final long serialVersionUID = 1324123542315L;
    private String name;
    private int age;
    private String address;
    private String address1;

    public Customer(String name, int age, String address) {
        this.name = name;
        this.age = age;
        this.address = address;
    }

    public String toString() {
        return "name=" + name + ", age=" + age + ", address=" + address;
    }
}

 

import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.util.Date;

/**
 * @see反序列化测试类。 Created with IntelliJ IDEA. User: Administrator Date: 13-12-11
 *              Time: 下午5:16 To change this template use File | Settings | File
 *              Templates.
 */
public class ObjectClient {
    public static void main(String[] args) {
        // 反序列化对象
        try {
            ObjectInputStream in = new ObjectInputStream(new FileInputStream(".\\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);
            int obj5 = in.readInt();
            System.out.println("obj5=" + obj5);
            in.close();
        } catch (ClassNotFoundException enf) {
            System.out.println("ClassNotFound");
            enf.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

 

import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
import java.util.Date;

/**
 * Created with IntelliJ IDEA. User: Administrator Date: 13-12-11 Time: 下午5:08
 * To change this template use File | Settings | File Templates.
 * 
 * @see对象的序列化 从输入流中读取数据的顺序(类型)要和写入流时候的顺序对应
 */
public class ObjectServer {
    private static String hello = "你好";
    private static int number = 1234;

    public static void main(String[] args) throws Exception {
        ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(".\\objectFile.obj"));
        // 序列化对象
        Customer customer = new Customer("阿蜜果", 24, "GuangZhouChina");
        out.writeObject(hello);
        out.writeObject(new Date());
        out.writeObject(customer);
        out.writeInt(number);
        out.writeInt(123); // 写入基本类型数据
        out.close();
    }
}

 

分享到:
评论

相关推荐

    多年Java精华积累

    - 数据流操作,如ObjectInputStream和ObjectOutputStream用于对象的序列化和反序列化。 8. **多线程** - 理解线程的基本概念,如何创建和控制线程(Thread类和Runnable接口)。 - 线程同步机制,如synchronized...

    2021_Java_Interview:2021年Java开发岗知识积累

    以上是根据"2021_Java_Interview:2021年Java开发岗知识积累"这个主题所涵盖的Java开发者应知应会的知识点。通过深入学习这些内容,不仅可以为面试做好充分准备,也能在实际工作中提升开发能力。

    java考试知识

    22. 对象序列化:Serializable接口,以及对象的序列化和反序列化。 七、网络编程 23. Socket编程:TCP和UDP协议,ServerSocket和Socket类的应用。 24. URL与URLConnection:HTTP通信的基础,理解URL的组成,以及...

    开源项目-andyleap-gencode.zip

    【开源项目-andyleap-gencode.zip】是一个开源项目,其主要功能是提供快速的序列化和反序列化代码生成工具。Gencode这个名字来源于"Generate Code"的缩写,表明这个项目的目标是自动生成用于数据转换的高效代码。...

    密码学序列密码java

    在密码学领域,序列密码是一种重要的加密方法,它在信息安全中扮演着至关重要的角色。序列密码的工作原理是基于密钥生成一系列...在理解和应用序列密码时,应注重理论知识的积累,同时结合实践,确保加密系统的安全性。

    JAVA笔试题积累

    7. **IO流**:掌握字节流和字符流的区别,以及缓冲流、对象序列化、文件操作、管道流等。 8. **反射**:理解反射的概念,如何动态获取类信息,创建对象,调用方法,修改字段值等。 9. **泛型**:泛型的引入是为了...

    flex+java入门

    JOTO(Java Object to Object)是BlazeDS中的一个重要概念,它负责在Flex客户端和Java服务器之间进行对象的序列化和反序列化。 在入门Flex+Java开发的过程中,你需要掌握以下知识点: 1. **Flex基础**:学习Flex ...

    java软件开发100家公司面试/笔试题+JAVA知识点分类总结.

    这份资源集成了100家公司的面试和笔试题目,涵盖了广泛的Java知识领域,并进行了细致的分类总结,旨在帮助求职者全面了解和准备Java技术面试。 首先,我们要明白Java语言的基础知识是面试的基石。这包括但不限于: ...

    java后端源码部署-JavaTutorial:Java教程:基础、中级、高级;常用的工具和Servlet容器使用说明

    序列化与反序列化 Gson 单元测试 EasyMock WireMock Mockito 网络&I/O RMI HTTP Netty 4.0.x 线程&并发 反射&代理 AOP 脚本语言 加密解密 开源组件 Slf4j Redis SSH Tomcat JBoss EJB 设计模式 Java工具

    java源码大全

    - **对象序列化与反序列化**:ObjectInputStream和ObjectOutputStream允许我们将Java对象持久化到磁盘或网络上。 2. **Java 多线程**: - **线程的创建**:可以通过实现Runnable接口或继承Thread类来创建线程。 ...

    Java聊天小程序源码

    7. **数据序列化与反序列化**: - **JSON或XML**:为了在网络间传输对象,可能使用JSON或XML将对象转换为字符串形式。 8. **数据库操作**: - **JDBC**:如果聊天记录需要持久化存储,可能会涉及使用Java ...

    Java软件开发工程师培训课程体系借鉴.pdf

    - **对象序列化**:学习对象的序列化和反序列化及其应用。 - **异常处理**:理解异常处理机制,包括异常的声明、抛出、捕获和自定义异常。 - **网络编程**:学习URL访问、Socket编程等网络技术。 - **新特性**:包括...

    Java_SE:java基础学习

    - 序列化:持久化对象,ObjectInputStream和ObjectOutputStream。 9. **多线程** - 线程的创建:通过实现Runnable接口或继承Thread类。 - 线程控制:sleep(), join(), yield(), interrupt()等方法。 - 同步机制...

    Java聊天系统毕业设计

    Java提供了Serializable接口,用于对象的序列化,而ObjectInputStream和ObjectOutputStream类则用于对象的序列化和反序列化。 4. **消息协议**:为了确保数据的正确解析,可能需要定义一个简单的消息协议,比如以...

    Java SE 基础 练习 Java学习资料

    8. **IO流**:掌握输入输出流的概念,包括文件读写、对象序列化和反序列化,以及使用BufferedReader和PrintWriter进行文本处理。 9. **多线程**:了解线程的基本概念,如何创建和管理线程,同步机制(synchronized...

    专业培训java的基本课程-7页精选文档.docx

    - **对象序列化:** 了解如何将对象转换为字节流以便存储或传输。 - **Java常用数据结构:** 深入理解集合框架中的各类容器。 - **Applet:** 创建可以在Web浏览器中运行的小应用程序。 - **流和文件:** 文件I/O...

    java课件完整版

    总之,这个"java课件完整版"涵盖了从入门到进阶的全面Java知识,无论是初学者还是有经验的开发者,都能从中受益。通过深入学习和实践,你可以掌握扎实的Java技能,为未来的职业生涯打下坚实的基础。

    java学习笔记,全程

    - 文件流与对象序列化:如何将对象写入文件并反序列化恢复。 5. **Java的面向对象编程** - 继承、封装和多态:深入理解面向对象三大特性及其在Java中的体现。 - 抽象类与接口:探讨抽象类和接口的区别与应用场景...

Global site tag (gtag.js) - Google Analytics