Jus*_*tin 10 java serialization nio bytebuffer
java.nio.ByteBuffer没有实现java.io.DataOutput或java.io.DataInput是否有一些微妙的原因,或者作者是不是选择这样做?映射调用似乎很简单(例如putInt() - > writeInt()).
我(以及其他一些人显然)的基本问题是较旧的类,它们知道如何使用通用接口序列化/序列化自己:DataInput/DataOutput.我想重用我的自定义序列化而无需为ByteBuffer编写自定义代理.
只需使用ByteArrayInputStreamor方法将缓冲区包装起来。直接模拟数据输入/输出流的问题与事先不知道大小有关。万一超额了怎么办?ByteArrayOutputStreamput()wrap()ByteBuffer
所需要的是ByteBufferOutputStream您可以在其中包装/公开所需行为的 。这方面的例子是存在的;Apache avro序列化方案就有这样的东西。自己动手并不难。为什么默认没有呢?嗯,这不是一个完美的世界......
ByteArrayOutputStream backing = new ByteArrayOutputStream();
DataOutput foo = new DataOutputStream(backing);
// do your serialization out to foo
foo.close();
ByteBuffer buffer = ByteBuffer.wrap(backing.toByteArray());
// now you've got a bytebuffer...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2795 次 |
| 最近记录: |