从非倒带磁带读取对象

时间:2016-04-30 19:37:22

标签: java io

我正在将几个可序列化的Java对象写入磁带。

使用倒带设备(/ dev / st0)读取写入的对象时,代码可以正常工作,但使用非倒带设备(/ dev / nst0)读取相同的对象时,代码永远不会成功。

失败总是发生在第一个readObject()调用中,返回StreamCorruptedException。

BufferedInputStream bis = new BufferedInputStream (
        new FileInputStream( device ), 2*1024*1024 );
ObjectInputStream ois = new ObjectInputStream( bis );
Object oisObject = ois.readObject();

异常:错误消息和相关的堆栈跟踪是:

java.io.StreamCorruptedException: invalid stream header: 9AF03B07
    at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:804)
    at java.io.ObjectInputStream.<init>(ObjectInputStream.java:299)

我希望有人能够帮助我理解为什么只有非倒带设备才会发生这种情况,并且可能还会建议对问题采取可能的补救措施。谢谢。

1 个答案:

答案 0 :(得分:0)

请注意,异常从new ObjectInputStream()抛出,十六进制数字告诉您该流的前四个字节是什么。这意味着无论该设备中有什么内容,它都不会以ObjectOutputStream开头。