2017-02-20 4 views
-3

私はバイト配列でInputStreamReaderを初期化してから、ObjectOutputStreamを初期化してコンストラクタに渡しました。しかし、エラー:invalid stream Headerが表示されます。 ObjectInputStreamに値を与える方法を教えてください。ObjectInputStreamを初期化する方法(nullではありません)

+0

バイト配列は、有効なシリアル化されたJavaオブジェクトInputStreamに渡されていますか? – rodit

+1

コードはありますか? –

+0

ObjectOutputStreamとObjectInputStreamを混同していませんか?あなたの質問はそれ自身と一致していません。 –

答えて

0

ObjectStreamsは非常に特殊なフォーマットであるため、バイト配列を作成して正しいフォーマットにすることはできません。 ObjectOutputStreamを使用してバイト配列にオブジェクトを書き込むことができ、正しい形式が確保されます。

// Write an object to a ByteArrayOutputStream 
ByteArrayOutputStream bout = new ByteArrayOutputStream(); 
ObjectOutputStream oout = new ObjectOutputStream(bout); 
oout.writeObject(someObject); 
oout.close(); 

// Read the object from the resulting array 
ObjectInputStream oin = new ObjectInputStream(new ByteArrayInputStream(bout.toByteArray())); 
oin.readObject(); // Read the object we wrote in 
+0

ありがとう:)それはそれをしました。 – cruck

関連する問題