私はいくつかのSerializable 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トンのバイトを書き込み、入力ストリームでもう一度読み込むだけですか? – Harald
はい、インフラストラクチャの検証は必須です。この場合、テープドライブとデバイスファイルは、LinuxコマンドとJava入出力ストリームを使用して正しく機能します。現在のところ、この問題はreadObject()に分離されているようで、巻き戻しされないデバイスを介してのみ発生します。 – Brett
この質問には、エラーメッセージとスタックトレースがありません。 – EJP