对象输出流 ObjectOutputStream java

对象输出流 ObjectOutputStream java

在这里插入图片描述

构造方法

protected  ObjectOutputStream() 
          为完全重新实现 ObjectOutputStream 的子类提供一种方法,让它不必分配仅由 ObjectOutputStream 的实现使用的私有数据。 
  ObjectOutputStream(OutputStream out) 
          创建写入指定 OutputStream 的 ObjectOutputStream。 

方法摘要

protected  void annotateClass(Class<?> cl) 
          子类可以实现此方法,从而允许在流中存储类数据。 
protected  void annotateProxyClass(Class<?> cl) 
          子类可以实现此方法,从而在流中存储定制数据和动态代理类的描述符。 
 void close() 
          关闭流。 
 void defaultWriteObject() 
          将当前类的非静态和非瞬态字段写入此流。 
protected  void drain() 
          排空 ObjectOutputStream 中的所有已缓冲数据。 
protected  boolean enableReplaceObject(boolean enable) 
          允许流对流中的对象进行替换。 
 void flush() 
          刷新该流的缓冲。 
 ObjectOutputStream.PutField putFields() 
          获取用于缓冲写入流中的持久存储字段的对象。 
protected  Object replaceObject(Object obj) 
          在序列化期间,此方法允许 ObjectOutputStream 的受信任子类使用一个对象替代另一个对象。 
 void reset() 
          重置将丢弃已写入流中的所有对象的状态。 
 void useProtocolVersion(int version) 
          指定要在写入流时使用的流协议版本。 
 void write(byte[] buf) 
          写入一个 byte 数组。 
 void write(byte[] buf, int off, int len) 
          写入字节的子数组。 
 void write(int val) 
          写入一个字节。 
 void writeBoolean(boolean val) 
          写入一个 boolean 值。 
 void writeByte(int val) 
          写入一个 8 位字节。 
 void writeBytes(String str) 
          以字节序列形式写入一个 String。 
 void writeChar(int val) 
          写入一个 16 位的 char 值。 
 void writeChars(String str)char 序列形式写入一个 String。 
protected  void writeClassDescriptor(ObjectStreamClass desc) 
          将指定的类描述符写入 ObjectOutputStream。 
 void writeDouble(double val) 
          写入一个 64 位的 double 值。 
 void writeFields() 
          将已缓冲的字段写入流中。 
 void writeFloat(float val) 
          写入一个 32 位的 float 值。 
 void writeInt(int val) 
          写入一个 32 位的 int 值。 
 void writeLong(long val) 
          写入一个 64 位的 long 值。 
 void writeObject(Object obj) 
          将指定的对象写入 ObjectOutputStream。 
protected  void writeObjectOverride(Object obj) 
          子类用于重写默认 writeObject 方法的方法。 
 void writeShort(int val) 
          写入一个 16 位的 short 值。 
protected  void writeStreamHeader() 
          提供 writeStreamHeader 方法,这样子类可以将其自身的头部添加或预加到流中。 
 void writeUnshared(Object obj) 
          将“未共享”对象写入 ObjectOutputStream。 
 void writeUTF(String str) 
          以 UTF-8 修改版格式写入此 String 的基本数据。 

功能演练

ObjectOutputStream的功能是把对象存放到文件中

假设我们要把一个学生对象保存到文件中

首先会要求这个学生对象有特别的设置

定义一个学生对象 用于演示

学生对象将要保存到文件中

学生类一定要实现序列化接口

在这里插入图片描述

创建对象输出流的对象

在这里插入图片描述

存入数据

把学生对象存入数据中

在这里插入图片描述
在这里插入图片描述

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
可以按照以下步骤实现: 1. 创建一个Map对象,将需要存储的对象放入其中。 例如,假设需要存储一个名为person的对象,可以这样创建Map对象: ``` Map<String, Object> map = new HashMap<>(); map.put("person", person); ``` 2. 创建一个文件输出对象和一个对象输出对象。 ``` FileOutputStream fileOutputStream = new FileOutputStream("map.txt"); ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream); ``` 3. 使用对象输出对象将Map对象写入到文件中。 ``` objectOutputStream.writeObject(map); ``` 4. 关闭对象输出和文件输出。 ``` objectOutputStream.close(); fileOutputStream.close(); ``` 完整的代码示例如下: ``` import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectOutputStream; import java.util.HashMap; import java.util.Map; public class Main { public static void main(String[] args) { // 创建一个Person对象 Person person = new Person("Tom", 20); // 创建一个Map对象,将Person对象放入其中 Map<String, Object> map = new HashMap<>(); map.put("person", person); try { // 创建文件输出对象输出 FileOutputStream fileOutputStream = new FileOutputStream("map.txt"); ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream); // 将Map对象写入文件中 objectOutputStream.writeObject(map); // 关闭输出 objectOutputStream.close(); fileOutputStream.close(); } catch(IOException e) { e.printStackTrace(); } } } class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } } ``` 执行完上述代码后,文件"map.txt"中将会存储一个包含了Person对象的Map对象

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鲸鱼编程pyhui

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值