首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >抛出EOFException

抛出EOFException
EN

Stack Overflow用户
提问于 2018-03-15 22:44:52
回答 1查看 49关注 0票数 0

下面的代码在反序列化过程中抛出一个EOFException (行大小=in.readInt());我对为什么会发生这种情况感到困惑。

代码语言:javascript
复制
import java.io.IOException;
import java.io.ObjectStreamException;
import java.io.Serializable;
import java.util.ArrayList;

public class ArrayList2 implements Serializable
{
    transient String [] bs = new String[100];
    transient int size;

    // custom serialiation (the physical structure is not equal to logical structure)
    private void writeObject(java.io.ObjectOutputStream out)
            throws IOException
    {
        out.defaultWriteObject();
        out.write(size);
        for (int i=0;i<size;i++)
            out.writeObject(bs[i]);
    }

    private void readObject(java.io.ObjectInputStream in)
            throws IOException, ClassNotFoundException {

        in.defaultReadObject();
        size = in.readInt(); // ERROR OCCURS HERE
        bs = new String[size];

        for (int i = 0; i < size; i++)
            bs[i] = (String) in.readObject();

    }
}

有趣的是,当大小不是短暂的,而且我没有在readObject和writeObject中读取或写入大小时,反序列化工作得很好。

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-15 23:15:53

代码语言:javascript
复制
out.write(size);

问题就在这里。这只写了一个字节。为了与你的阅读代码保持对称,它应该是

代码语言:javascript
复制
out.writeInt(size);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49310430

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档