附加到 ObjectOutputStream

2023-12-04

是否无法附加到ObjectOutputStream?

我正在尝试附加到对象列表。以下代码片段是每当作业完成时调用的函数。

FileOutputStream fos = new FileOutputStream
           (preferences.getAppDataLocation() + "history" , true);
ObjectOutputStream out = new ObjectOutputStream(fos);

out.writeObject( new Stuff(stuff) );
out.close();

但是当我尝试读取它时,我只得到文件中的第一个。 然后我得到java.io.StreamCorruptedException.

为了阅读我正在使用

FileInputStream fis = new FileInputStream
        ( preferences.getAppDataLocation() + "history");
ObjectInputStream in = new ObjectInputStream(fis);    

try{
    while(true)
        history.add((Stuff) in.readObject());
}catch( Exception e ) { 
    System.out.println( e.toString() );
}

我不知道会有多少物体出现,所以我正在阅读,没有例外。根据谷歌的说法,这是不可能的。我想知道是否有人知道方法?


技巧如下:子类ObjectOutputStream并覆盖writeStreamHeader method:

public class AppendingObjectOutputStream extends ObjectOutputStream {

  public AppendingObjectOutputStream(OutputStream out) throws IOException {
    super(out);
  }

  @Override
  protected void writeStreamHeader() throws IOException {
    // do not write a header, but reset:
    // this line added after another question
    // showed a problem with the original
    reset();
  }

}

要使用它,只需检查历史文件是否存在并实例化此可追加流(如果文件存在=我们追加=我们不需要标头)或原始流(如果文件不存在=我们需要一个标题)。

Edit

我对班级的第一个命名不满意。这个更好:它描述了“它的用途”,而不是“它是如何完成的”

Edit

再次更改名称,以澄清该流仅用于附加到现有文件。它不能用于创建new包含对象数据的文件。

Edit

添加了一个调用reset() after 这个问题显示刚刚覆盖的原始版本writeStreamHeader在某些情况下,成为无操作可能会创建无法读取的流。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

附加到 ObjectOutputStream 的相关文章

  • 抽象超类的默认接口方法

    可以说我有以下结构 abstract class A abstract boolean foo interface B default boolean foo return doBlah class C extends A implemen
  • 使用 Spring MVC 返回 PDF 文件

    实际上 我有这个功能 我有一个框架 可以在其中设置 URL ip port birt preview report report rptdesign format pdf parameters 并且该框架呈现 PDF 文件 但我想隐藏该网址
  • java替代Thread.stop()来中断特定调用

    我正在寻找一种方法来告诉这个调用 大约需要 20 120 秒 final Area image final AffineTransform transform new AffineTransform transform scale imag
  • 使用 xuggle 将 mp3 转换为 wav 出现异常

    我正在尝试将 mp3 转换为 wav 代码在这里 String mp3 F work pic2talk38512 mp3 String wav F work pic2talk38512 wav TranscodeAudioAndVideo
  • Java 9 中可以使用提前编译吗?

    As per JEP 295 http openjdk java net jeps 295 任何 JDK 模块 类或用户代码的 AOT 编译都是实验性的 JDK 9 中不支持 要使用 AOT 化的 java base 模块 用户必须编译该模
  • 隐藏类的 System.out.print 调用

    我正在使用 java 库 jar 文件 该文件的作者放入了一堆System out print and System out printlns 有没有办法隐藏特定对象的这些消息 编辑 看起来jar文件似乎正在创建一堆线程 并且每个线程都有它
  • Java byte[] 与 String 之间的转换

    为什么这个junit测试失败了 import org junit Assert import org junit Test import java io UnsupportedEncodingException public class T
  • MongoDB:尝试从 JSON 读取 Long 导致 java.lang.Integer 无法转换为 java.lang.Long

    我有一个代码可以从 MongoDB 读取特定格式的数据 我需要测试一下 为此 我使用要测试的数据创建一个 JSON id ObjectId 57552e32e4b0839ede67e0af serial 574000690 startDat
  • Ant 无法启动,给出主类错误

    我正在运行 Elementary OS 基于 Ubuntu 12 并且在运行 apache ant 时遇到问题 它在重新启动之前就可以正常工作 所以我不确定会发生什么变化 我在 etc environment 中定义了环境变量 如下所示 P
  • 在 JavaFX 中拖动未装饰的舞台

    我希望将舞台设置为 未装饰 使其可拖动且可最小化 问题是我找不到这样做的方法 因为我遇到的示例是通过插入到主方法中的方法来实现的 我想通过控制器类中声明的方法来完成此操作 就像我如何使用下面的 WindowClose 方法来完成此操作 这是
  • 驱动程序信息:driver.version:未知,使用 ChromeDriver v78.0.3904.70 和 Chrome 浏览器 v78.0.3904.97

    我使用的是java 1 8和chrome浏览器版本78 0 3904 97 我正在尝试使用 chrome 驱动程序版本执行我的 selenium 脚本代码78 0 3904 70 但在执行时我面临以下问题并且 chrome 立即崩溃 Pic
  • Java 7 中 Object 和 int 的比较

    最近我偶然发现了一个问题 让我停下来思考 对我来说 下面的代码应该总是会触发错误 但是当我的一位同事问我为什么 Eclipse 没有显示错误时 我无法回答任何问题 class A public static void main String
  • java.lang.IllegalArgumentException:addChild:子名称“/”不唯一

    java lang IllegalArgumentException addChild 子名称 不唯一 通过在 tomcat webapps 文件夹中启用和禁用 saml 单点登录来替换现有 war 文件时遇到此问题 我正在使用 apach
  • activemq 的优先级

    我们目前正在使用 JMS 和 activemq 5 5 1 开发一个应用程序 我们想为某些消息定义更高的优先级 这将使它们首先被消耗 设置生产者和消费者后 通过spring 3 1 JMSTemplate 优先级并不能完全发挥作用 事实上
  • 使用 Java 通过 HTTP 下载未知长度的文件

    我想用java下载一个HTTP查询 但是我下载的文件在下载时有一个未确定的长度 我认为这将是相当标准的 所以我搜索并找到了它的代码片段 http snipplr com view 33805 http snipplr com view 33
  • 处理照片上传的最佳方式是什么?

    我正在为一个家庭成员的婚礼制作一个网站 他们要求的一个功能是一个照片部分 所有客人都可以在婚礼结束后前往并上传他们的照片 我说这是一个很棒的想法 然后我就去实现它 那么只有一个问题 物流 上传速度很慢 现代相机拍摄的照片很大 2 5 兆 我
  • 我可以关闭并重新打开套接字吗?

    我学习了一个使用套接字的例子 在此示例中 客户端向服务器发送请求以打开套接字 然后服务器 侦听特定端口 打开套接字 一切都很好 套接字从双方 客户端和服务器 打开 但我仍然不清楚这个东西有多灵活 例如 客户端是否可以关闭一个打开的 从两端
  • Apache Kafka 是否提供异步订阅回调 API?

    我的项目正在将 Apache Kafka 视为老化的基于 JMS 的消息传递方法的潜在替代品 为了让这个过渡尽可能的顺利 如果替代的排队系统 Kafka 有一个异步订阅机制那就更理想了 类似于我们当前项目使用的JMS机制MessageLis
  • Python 可以替代 Java 小程序吗?

    除了制作用于物理模拟 如抛射运动 重力等 的教育性 Java 小程序之外 还有其他选择吗 如果你想让它在浏览器中运行 你可以使用PyJamas http pyjs org 这是一个 Python 到 Javascript 的编译器和工具集
  • 将带有时区的 Joda-Time `DateTime` 转换为没有时区的 DateTime?

    Given a DateTime http www joda org joda time apidocs org joda time DateTime html例如2015 07 09T05 10 00 02 00 using 乔达时间 h

随机推荐

  • R:制作加拿大邮政编码地图

    我正在使用 R 编程语言 这是我的问题的一些背景 在加拿大 每个地址都有一个邮政编码 如美国邮政编码 这些邮政编码的格式为 字母编号字母 数字字母编号 例如 A1B 2C3 邮政编码的前三个字符称为 FSA 所有前三个字母相同的邮政编码均被
  • 通过反射检索参数值

    我试图提出一种方法的设计 该方法采用另一个方法作为参数并检索所传递方法的参数值 如何才能做到这一点 我尝试过使用java lang reflect 但似乎找不到支持此的API 您无法真正获得像这样作为参数传递的值 你可以自己做Proxy并在
  • 使用 Jackson XmlWrapper 在类中第二个时无法反序列化(转换)未包装的列表

    我正在尝试使用 Jackson 的 XmlMapper 来反序列化一些包含未包装列表的简单 xml 文件 My code package zm study xmlserialize jackson import java util List
  • 有什么方法可以在生产环境中使用数据集调试应用程序吗?

    My CloudKit数据集在Production Environment比Development 并且可能存在其他奇异差异 有一个讨厌的deadlock在生产模式下使用我的应用程序 是否可以以任何方式调试客户端 或者我应该记录尽可能多的内
  • 使用 VBA 打开受 mdw 文件保护的 ms-access 数据库时模拟 SHIFT 键按下?

    我想递归地运行目录 mdb文件并搜索它们以查看哪些文件具有特定的链接表 这些文件使用多种方法来保护 mdw文件 我没有写任何一个 但我是它们的维护者 I ve 找到了一种方法来做到这一点 但是互动性太强 我需要它是非交互式的 因为其中一些
  • MFC 无模式对话框立即关闭

    我喜欢编写一个基于无模式对话框的应用程序 但我有一个问题 当程序启动时 窗口立即关闭 当我制作模式对话框时 相同的代码可以正常工作 DoModal Csetkliens h pragma once ifndef AFXWIN H error
  • 将程序*和*动态加载的文件打包到单个可执行文件中? (python + pygame,或与语言无关)

    关于制作独立可执行文件的问题有很多很好的答案 但我不知道如何将艺术资源 或动态加载的文件 打包到其中 我为什么要这样做 因为如果能够分发一个完全位于单个可执行文件中且无需安装程序的简单 废弃 游戏 那就太棒了 据我从搜索中得知 有两种基本方
  • 使用 JQuery 的 Uploadify 插件时出现“http 错误”

    我正在使用这里的插件 http www uploadify com 我设置了一个简单的测试用例 选择一个文件等 当我尝试上传时收到 HTTP 错误 这是我标题中的相关代码
  • Jquery Validation Plugin,动态表单验证

    我正在使用Jquery 验证插件通过 Ajax 加载的表单 动态表单 我知道从 Jquery 1 4 开始 提交时的实时事件现在是可能的 现在的问题是我想在验证动态表单后显示确认消息 我的代码如下所示 dynamicForm live su
  • sdk 的 swagger 相当于什么? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 人们是否有某种标准可以用来记录他们的库和框架 理想情况下 它会使用 JSON 或 YAML 并允许生成能够很好地呈现它的 HTML 页面 SDK 文
  • 手机快速旋转180度,相机预览翻转过来

    我有一个自定义相机应用程序 当我将手机旋转 90 度时 相机预览工作正常 但是当我快速旋转手机 180 度时 相机预览会颠倒过来 有什么解决办法吗 下面是我的代码 public class CustomCameraActivity exte
  • iTextSharp:横向表格

    我正在使用 iTextSharp 生成一个大文档 在本文档中 我想要一些横向的特定页面 其余的都是肖像 有谁知道我该怎么做 开始新文档不是一个选择 Thanks 您可以设置文档大小 它将影响下一页 一些片段 在某处设置您的文档 您已经知道了
  • 以编程方式执行 Access 2007 报告并将该报告导出为 PDF?

    我在 Access 2007 数据库中有一份很棒的报告 并且希望自动执行和导出该报告 这可能吗 您对实现这一目标所需的方法的第一个猜测是什么 您应该能够使用 DoCmd OutputTo 方法实现自动化 我认为 A2007 的 PDF 功能
  • 打印指针值

    include
  • Google OAuth 2.0 服务帐户 - 日历 API(PHP 客户端)

    我有一个 Google Apps 帐户 我正在尝试操作此帐户中的用户日历 我已经创建了项目 添加了日历 API 服务 并通过 API 控制台创建了服务帐户 OAuth 2 0 客户端 ID 我已通过日历设置将生成的电子邮件地址添加到日历中以
  • Xcode9 iOS11 应用程序版本中缺少 CFBundleIconName

    我正在努力使用使用 iOS 11 SDK 构建的 Xcode 9 来发布我们应用程序的新版本 归档和上传二进制文件进展顺利 没有任何问题 该版本在 iTunes Connect 的 活动 下显示为 正在处理 然后它消失了 我收到了以下电子邮
  • Jquery Mobile - $(document).ready 未触发

    所以我有一个列表视图 其中每个组件都连接到一个单击函数 如下所示 function launchNewPage mobile changePage newPage html transition slide 我遇到的问题与下一页有关 该页面
  • R:通过 *list* 列连接两个表(tibbles)

    似乎应该有一个简单的答案 但我一直找不到 tib1 lt tibble x list 1 2 3 y list 4 5 6 tib1 A tibble 3 2 x y
  • 使用 CouchDB/PouchDB 时的应用程序架构

    我想知道使用时架构应该是什么样子PouchDB作为移动应用程序中的本地存储 而不是localStorage 此时我习惯将应用程序的数据缓存到localStorage当需要时 我对后端执行 API 调用来请求或发布数据 后端保存所有逻辑 例如
  • 附加到 ObjectOutputStream

    是否无法附加到ObjectOutputStream 我正在尝试附加到对象列表 以下代码片段是每当作业完成时调用的函数 FileOutputStream fos new FileOutputStream preferences getAppD