`

Java手动序列化和反序列化的实现

阅读更多
 //序列化对象为String字符串,先对序列化后的结果进行BASE64编码,否则不能直接进行反序列化
     public static String writeObject(Object o) throws Exception {
         ByteArrayOutputStream bos = new ByteArrayOutputStream();
         ObjectOutputStream oos = new ObjectOutputStream(bos);
         oos.writeObject(o);
         oos.flush();
         oos.close();
         bos.close();
         //return new BASE64Encoder().encode(bos.toByteArray());
         return new String(bos.toByteArray(), "ISO-8859-1");
     }

     //反序列化String字符串为对象
     
     public static Object readObject(String object) throws Exception{
         //ByteArrayInputStream bis = new ByteArrayInputStream(new BASE64Decoder().decodeBuffer(object));
         ByteArrayInputStream bis = new ByteArrayInputStream(object.getBytes("ISO-8859-1"));
         ObjectInputStream ois = new ObjectInputStream(bis);
         Object o = null;
         try {
             o = ois.readObject();
         } catch(EOFException e) {
             System.err.print("read finished");
         }
         bis.close();
         ois.close();
         return o;
    }
分享到:
评论

相关推荐

    Java对象的序列化和反序列化实践

    `ObjectSaver.java`可能包含了实现序列化和反序列化的示例代码。通过阅读和理解这段代码,你可以深入学习如何在实际项目中应用这些概念。同时,它也可能包含了处理异常、优化性能或者确保序列化安全性的额外策略。 ...

    JAVA对象的序列化与反序列化详细PPT课件.pptx

    如果类实现了`Externalizable`接口,那么必须手动实现`writeExternal()`和`readExternal()`方法,这两个方法负责控制对象的序列化和反序列化逻辑。这样,开发者可以精确地控制哪些字段被序列化,以及如何恢复这些...

    java自动序列化

    如果手动指定,应保持在序列化和反序列化时一致,否则可能导致`InvalidClassException`。 七、序列化工具 1. `java.io.ObjectOutputStream`和`java.io.ObjectInputStream`:基础的序列化和反序列化工具类。 2. `...

    java序列化与反序列化

    Java序列化和反序列化是Java平台中的核心特性,允许对象在各种上下文中持久化和传输。虽然它提供了许多便利,但同时也需要注意安全性问题和性能优化。在实际开发中,根据需求选择合适的序列化策略和工具是至关重要的...

    Java序列化

    - Java允许使用 `writeObject()` 和 `readObject()` 方法来自定义序列化和反序列化的行为,这两个方法需要在类中声明为`private`,并由`java.io.Serializable` 接口的实现类提供。 7. **序列化安全性** - 序列化...

    jackson库实现定制化的java序列化反序列化操作

    标题中的“jackson库实现定制化的java序列化反序列化操作”指的是利用Jackson库的能力,通过自定义规则来控制对象的序列化和反序列化过程。这通常涉及到创建自定义的`JsonSerializer`和`JsonDeserializer`,或者使用...

    Java对象的序列化与反序列化Java开发Java经验技巧

    Java对象的序列化和反序列化是Java开发中的基础技能,理解并熟练运用这一技术,可以提升程序的可维护性和扩展性,同时也能有效解决数据持久化和跨进程通信的问题。在实际开发中,应根据具体需求选择合适的序列化方式...

    自己实现的protobuf 压缩类,并能序列化反序列化

    描述中提到的“序列化反序列化”是protobuf的核心特性。序列化是将对象的状态转化为可存储或可传输的形式的过程,而反序列化则是将这种形式的数据恢复为原来的对象状态。在protobuf中,开发者定义数据结构的协议文件...

    关于 Java 对象序列化您不知道的 5 件事

    在本文中,我们将深入探讨关于Java对象序列化你可能不知道的五件事情,这些知识点对于理解和优化你的Java应用程序至关重要。 1. **序列化的意义与用途** Java对象序列化不仅用于持久化对象状态,还能在网络传输中...

    java 序列化时排除指定属性

    - **性能优化**:序列化大型对象时,如果其中某些属性不必要,排除它们可以减少序列化和反序列化的时间及存储需求。 - **设计考虑**:某些属性可能包含临时或计算值,在反序列化时不需要恢复。 3. **如何排除特定...

    Java中序列化学习笔记/序列和反序列化的实现

    如果你确实需要序列化静态变量,你需要使用`transient`关键字标记那些不需要序列化的静态变量,或者自定义序列化和反序列化逻辑。 总结起来,Java的序列化是一个强大的工具,允许对象在网络和磁盘之间自由移动,...

    对象的序列化和反序列化

    对象的序列化和反序列化是Java编程语言中重要的概念,它们主要用于持久化对象的状态,以便在需要时能够恢复。序列化是将一个对象转换为字节流的过程,而反序列化则是将字节流还原为原来的对象。这两个过程在许多场景...

    一个基于java jaxb的序列化例子,非常简单易懂

    Java JAXB(Java Architecture for XML Binding)是Java平台上的一个标准组件,用于XML和Java对象之间的绑定,实现了XML的序列化和反序列化。这个技术使得开发者可以方便地将Java对象转换为XML文档,同时也可以从XML...

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

    3. **完全自定义序列化**:如果类实现了`Externalizable`接口,那么需要手动编写`writeExternal()`和`readExternal()`方法,完全控制序列化和反序列化的过程。 **三、`Serializable`接口** `Serializable`接口是一...

    Java 多次序列化对象到同壹個文件及反序列化的问题

    此外,对于工具的使用,Java标准库提供了`java.io.ObjectOutputStream`和`java.io.ObjectInputStream`用于序列化和反序列化。第三方库如Apache Commons Lang的SerializationUtils,或Google的Gson和Protobuf也能简化...

    JAVA对象的序列化与反序列化详细PPT学习教案.pptx

    3. 实现`Externalizable`接口则更为灵活,需要手动实现`writeExternal(ObjectOutput out)`和`readExternal(ObjectInput in)`方法,这允许开发者完全控制对象的序列化和反序列化过程。 序列化和反序列化对于数据的...

    java序列化和反序列化,面试必备

    Java序列化和反序列化是Java开发中常见且重要的概念,尤其在面试中常常被问及。序列化是指将一个Java对象转化为字节序列的过程,这样可以将对象的状态持久化到磁盘上或者在网络中进行传输。反序列化则是相反的过程,...

    几种序列化的实现方法 java自带, Writable, Avro

    - 需要手动编写序列化和反序列化的代码。 - 不支持复杂的对象结构,通常只适用于基本类型和自定义的简单类型。 3. **Avro** Avro是由Apache Hadoop项目提供的序列化框架,它提供了更高级别的数据描述和序列化...

    关于Java对象序列化您不知道的5件事Java开发Java

    当反序列化时,JVM会检查这个ID以确保序列化和反序列化的类版本一致。如果版本ID不匹配,会抛出`InvalidClassException`。通常,当你修改了类的结构(如添加、删除或修改字段),应手动更新这个ID以避免错误。 5. *...

Global site tag (gtag.js) - Google Analytics