当前位置: 首页 > 面试题库 >

Java可序列化对象到字节数组

董高畅
2023-03-14
问题内容

假设我有一个可序列化的类AppMessage

我想byte[]通过套接字将其传输到另一台计算机,从接收的字节重建该计算机。

我怎样才能做到这一点?


问题答案:

准备要发送的字节数组:

ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream out = null;
try {
  out = new ObjectOutputStream(bos);   
  out.writeObject(yourObject);
  out.flush();
  byte[] yourBytes = bos.toByteArray();
  ...
} finally {
  try {
    bos.close();
  } catch (IOException ex) {
    // ignore close exception
  }
}

从字节数组创建对象:

ByteArrayInputStream bis = new ByteArrayInputStream(yourBytes);
ObjectInput in = null;
try {
  in = new ObjectInputStream(bis);
  Object o = in.readObject(); 
  ...
} finally {
  try {
    if (in != null) {
      in.close();
    }
  } catch (IOException ex) {
    // ignore close exception
  }
}


 类似资料:
  • 我正在试验Stanford CoreNLP库,我想序列化主要的StanfordCoreNLP管道对象,尽管它抛出了一个java.io.NotSerializableException。 完整故事:每当我运行我的实现时,将管道注释器和分类器加载到内存中大约需要15秒。最终进程的内存约为600MB(很容易小到可以存储在我的机箱中)。我想在第一次创建管道后保存它,这样我就可以在以后将其读入内存。 然而,

  • 问题内容: 例如,我将使用哪种语法获取表示字符串的字节数并将其与表示该字符串的字节数进行比较? 我正在使用多代理程序代理系统通过消息发送对象,我想跟踪每条消息占用的空间。只要该方法与对象的实际大小成比例地缩放,该方法就不必精确无误。例如,长度为4的字符串向量将报告为小于长度为5的字符串向量。 问题答案: 您可以使用和将对象转换为字节数组: 我只是测试了一下。您要计算其大小的对象需要实现(这意味着您

  • 本文向大家介绍java对象的序列化和反序列化,包括了java对象的序列化和反序列化的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了java对象的序列化和反序列化,供大家参考,具体内容如下 1. 什么是序列化        将对象转换为字节流保存起来,比如保存到文件里,并在以后还原这个对象,这种机制叫做对象序列化。(补充一句:把对象保存到永久存储设备上称为持久化) 2. 怎么实现序列化

  • 情况:我希望使用ObjectOutputStream将一组对象(不同类型)从客户端发送到服务器。 问题:对象数组不可序列化(我得到一个not serializable异常)。 我尝试了什么:我创建了一个扩展Object并实现Serializable的虚拟类。但是我不能将原始对象数组强制转换为此类。 是否有任何方法可以序列化对象数组?

  • 我正在尝试通过ObjectOutputStream将文件从服务器发送到客户端。我认为使用这个流发送不同的对象和原始文件数据是一种更简单的方法。

  • 问题内容: 什么之间的区别,并在上课吗?关于差异,我似乎找不到太多信息。 问题答案: 调用默认的反序列化机制,并在类上定义方法时使用。换句话说,当您具有自定义反序列化逻辑时,您仍然可以返回默认的序列化,这将对您的非静态,​​非瞬态字段进行反序列化。例如: 另一方面,当您在反序列化的对象的外部创建并想要读取先前已序列化的对象时,将使用: