`
newObject
  • 浏览: 23780 次
  • 性别: Icon_minigender_2
  • 来自: 济南
社区版块
存档分类
最新评论

ObjectOutputStream

阅读更多
要根据用户选择,向一个文件写一个类(Student)的实例,使用FileOutputStream、BufferedOutputStream与ObjectOutputStream流,FileOutputStream初始化为:
fileOutputStream = new FileOutputStream(fileStorage, true); // fileStorage是File的实例或是字符串形式。追加写(append=true)
使用objectOutputStream.writeObject(student)进行写入,写入前建立流,写入后关闭流(如果不关闭,会写不进去)。
student = (Student) objectInputStream.readObject()用来读出。读出前建立流,读出后关闭流(如果不关闭,会读不出来)。
由于每一次启动写操作时都会写入一个标记头,造成读入时只能读取第一个写入的记录。
ObjectOutputStream的构造函数会向输出流中写入一个标识头,而ObjectInputStream会首先读入这个标识头.因此,多次以追加方式向一个文件中写入object时,该文件将会包含多个标识头.
所以用ObjectInputStream来deserialize这个ObjectOutputStream时,将产生StreamCorruptedException.
一种解决方法是可以构造一个ObjectOutputStream的子类,并覆盖writeStreamHeader()方法.
被覆盖后的writeStreamHeader()方法应判断是否为首次向文件中写入object,是则调用super.writeStreamHeader();


分享到:
评论

相关推荐

    socket objectoutputstream 传对象 例子

    在Java编程中,Socket和ObjectOutputStream是两个非常重要的概念,它们是进行网络通信的基础。Socket是TCP/IP协议的实现,提供了两台计算机之间双向、独立的数据传输通道。而ObjectOutputStream则是一个序列化流,...

    python-javaobj:python-javaobj是一个python库,提供了读取Java对象序列化ObjectOutputStream的函数

    python-javaobj 是一个 python 库,它提供了读取和写入(写入当前是 WIP)Java 对象的函数,序列化或将被ObjectOutputStream反序列化。 这种对象表示形式是 Java 世界中的标准数据交换格式。 javaobj 模块公开了...

    java序列化与ObjectOutputStream和ObjectInputStream的实例详解

    Java序列化与ObjectOutputStream和ObjectInputStream的实例详解 Java序列化是指将Java对象转换为字节流的过程,以便将其存储或传输,而后可以将其恢复为原来的对象状态。Java提供了两种方式来实现序列化: ...

    JavaIOObjectStreams:FileInputStream 与 ObjectInputStream 和 ObjectOutputStream 的组合

    在Java I/O体系中,ObjectInputStream和ObjectOutputStream是两个关键类,它们提供了序列化和反序列化的功能,使得Java对象可以被写入到流中(例如磁盘或网络)并在之后重新读取。而FileInputStream则用于处理二进制...

    ObjectInputStream 和 ObjectOutputStream 介绍_动力节点Java学院整理

    ObjectOutputStream out = new ObjectOutputStream(fileOut); // 序列化对象 out.writeObject(user); out.close(); fileOut.close(); System.out.println("Serialized data is saved in user.ser"); // 输入流,...

    java-deserialize-recovery:该项目旨在恢复使用java.io.ObjectOutputStream创建的文件

    `java-deserialize-recovery`项目专注于处理使用`java.io.ObjectOutputStream`创建的文件,这是一个Java核心库中的类,用于将Java对象转换为字节流,以便进行持久存储或网络传输。在Java中,序列化是对象状态持久化...

    Socket聊天室源程序

    ObjectOutputStream output;//网络套接字输出流 ObjectInputStream input;//网络套接字输入流 ClientReceive recvThread; //建立菜单栏 JMenuBar jMenuBar = new JMenuBar(); //建立菜单组 JMenu ...

    TestObjectOutputStream.java

    import java.io.ObjectOutputStream; public class TestObjectOutputStream { public static void main(String[] args) { try { //1.创建ObjectOutputStream类型的对象与c:/a.txt文件关联 ObjectOutputStream...

    Java对象Serializable接口实现详解

    ObjectOutputStream objectOutputStream = new ObjectOutputStream(new FileOutputStream("/Users/guanliyuan/user.txt")); objectOutputStream.writeObject(user); objectOutputStream.close(); } catch ...

    java2类库17[整理].pdf

    Java的`ObjectOutputStream`是Java.io包中的一个关键类,用于序列化对象到输出流。序列化是指将Java对象转换为字节流的过程,以便可以存储或在网络上传输。这个过程使得数据能够在不同时间或不同环境之间保持一致性...

    object文件流

    在Java编程语言中,ObjectInputStream和ObjectOutputStream是用于处理对象序列化和反序列化的类,它们是Java.io包的一部分。对象序列化是将Java对象转换为字节流的过程,而反序列化则是将字节流恢复为原来的Java对象...

    Java高级课程设计--网络聊天室

    ObjectOutputStream objectOutputStream = new ObjectOutputStream( out); objectOutputStream.writeObject(bean); objectOutputStream.flush(); } catch (Exception ew) { ew....

    Java自带的序列化方法1

    本文将深入探讨Java自带的序列化方法,主要包括`ObjectOutputStream`和`XMLEncoder`,以及它们对应的解码器和`readObject()`方法。 首先,让我们来看看`ObjectOutputStream`,这是Java提供的用于对象序列化的标准类...

    Java 问题和分析 Serializing a primitive with ObjectOutStream

    通常情况下,将使用 ObjectOutputStream 类来创建序列化的字节流。该类提供了 writeObject 方法,该方法可以方便地处理整个对象图的序列化。 在上述问题中,需要对一个长整型(long)的原始值进行序列化,并且已经...

    java中对象的序列化

    2. **创建ObjectOutputStream**:然后,你可以使用一个`FileOutputStream`或其他类型的输出流来创建一个`ObjectOutputStream`对象。这个对象能够处理Java对象的序列化。 3. **写入对象**:通过`ObjectOutputStream`...

    Java和C#输入输出流的方法(详解)

    `ObjectInputStream`和`ObjectOutputStream`用于序列化和反序列化对象;而`DataInputStream`和`DataOutputStream`则支持基本类型的数据读写。 在C#中,除了基础的`FileStream`,还有`MemoryStream`用于内存中的流...

    Java多线程(适合Java初学者查看).zip

    ObjectOutputStream objout = new ObjectOutputStream(out); // 向服务器发送信息 objout.writeObject(user); socket.shutdownOutput(); System.out.println("正在向服务器端发送信息。。。"); ...

    java中把对象转化为byte数组的方法.pdf

    ObjectOutputStream oo = new ObjectOutputStream(bo); oo.writeObject(obj); bytes = bo.toByteArray(); bo.close(); oo.close(); } catch (Exception e) { System.out.println("translation" + e....

    SCJP解析系列之一

    这里存在一个错误,`ObjectOutputStream`的实例化语句应该改为`ObjectOutputStream os = new ObjectOutputStream(fs)`,因为`ObjectOutputStream`需要一个`OutputStream`类型的参数,而不是另一个`FileOutputStream`...

Global site tag (gtag.js) - Google Analytics