0
我有一個序列化代碼,可以將一個對象序列化爲一個bytebuffer。我想先將緩衝區的長度寫入流,然後再寫入字節緩衝區本身。這裏是我如何寫outputStream:整數和bytebuffer到Java輸出流的序列化
MyObject = new MyObject();
//fill in MyObject
...
DataOutputStream out = new DataOutputStream(new FileOutputStream("a.txt"));
ByteBuffer buffer = MySerializer.encode(myObject);
int length = buffer.remaining();
out.write(length);
WritableByteChannel channel = Channels.newChannel(out);
channel.write(buffer);
out.close();
我驗證了這段代碼,它似乎工作正常。但是當我嘗試反序列化時,我無法正確執行。這裏是我的解串器的代碼片段:
DataInputStream in = new DataInputStream(new FileInputStream("a.txt"));
int objSize = in.readInt();
byte[] byteArray = new byte[objSize];
...
的問題是,長度沒有被正確從流中讀取。
任何人都可以幫我弄清楚我在這裏錯過了什麼?