【问题标题】:java.io.StreamCorruptedException: invalid stream header: EFBBBFAC [duplicate]java.io.StreamCorruptedException:无效的流标头:EFBBBFAC [重复]
【发布时间】:2017-10-28 05:16:02
【问题描述】:

我正在编写一个带有 ObjectOutputStream 和 ObjectInputStream 的函数来将联系人信息导入和导出到文件中。

我有一个异常 java.io.StreamCorruptedException: invalid stream header: EFBBBFAC in part ObjectInputStream 我不知道修复它。

如何解决,谢谢。

LienHe lh = new LienHe(name, phone, img);
    try {
        ObjectOutputStream out = new ObjectOutputStream(
                                 new FileOutputStream("src/Bai6/lienhe.txt", true));
        out.writeObject(lh);
        out.close();
    } catch (FileNotFoundException ex) {
        Logger.getLogger(FrmThemLienHe.class.getName()).log(Level.SEVERE, null, ex);
    } catch (IOException ex) {
        Logger.getLogger(FrmThemLienHe.class.getName()).log(Level.SEVERE, null, ex);
    }



lst = new ArrayList<>();
    try {// exception
        ObjectInputStream in = new ObjectInputStream(
                               new FileInputStream("src/Bai6/lienhe.txt")));
        while (in.available() > 0) {
            LienHe lh = (LienHe) in.readObject();
            lst.add(lh);
        }
    } catch (ClassNotFoundException | IOException ex) {
        System.out.println(ex.getMessage());
    }

【问题讨论】:

  • 也许不相关,但in.available() 并不像你想的那样。
  • 一开始我用了while(true)但是出现了一个错误,我搜索了互联网,看到人们这样做了。
  • 正确的和你可能看到的人们所做的不一定是一回事。请参阅 Javadoc。 available() 不是流结束的有效测试。
  • 我在互联网上搜索,我看到人们在铺木板、躺在火车轨道上以及做各种其他愚蠢/不安全的事情。您应该只关注 good 来源提供的编码示例。

标签: java serialization objectinputstream


【解决方案1】:

您不能在不采取特殊措施的情况下附加到ObjectOutputStream。您应该序列化 集合,并在这样做时替换整个文件。

【讨论】:

    【解决方案2】:

    您没有这么说,但我假设您正在多次运行第一段代码(附加到同一个文件),然后运行第二段一次......以读取您编写的所有对象.

    实际上,您正在连接多个对象流,并尝试将其作为单个流读取。

    那是行不通的。问题是每个流都以一个特殊的标头开头。当您尝试将串联读取为单个流时,阅读器将看到意外的标题。这就是导致您看到的异常的原因。

    解决方案是重构您的代码,以便编写器将所有对象写入同一个 ObjectOutputStream。

    【讨论】:

      猜你喜欢
      • 2018-08-03
      • 2011-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多