我需要编写ByteBuffer的对象被输入为接口 DataOutput 的实例,而不是类 DataOutputStream (实现DataOutput)的实例。我需要假设ByteBuffer.hasArray()可以返回false,所以我无法访问任何底层数组。
DataOutput和DataOutputStream都不提供接受ByteBuffer的write方法。但是,将ByteBuffer写入DataOutputStream可以通过将OutputStream传递给Channels类的实用程序方法获得的WritableByteChannel来完成。但是DataOutput与OutputStream不兼容,并且不存在类似的实用方法。
SDK是否提供了执行此操作的有效例程?我宁愿不必创建一个中间字节数组并使用批量get操作循环遍历ByteBuffer(有效地复制WritableByteChannel实现的代码)。