我需要编写ByteBuffer的对象类型为接口DataOutput的实例,而不是类DataOutputStream (实现DataOutput)的实例。我需要假设ByteBuffer.hasArray()可以返回false,所以我不能访问任何底层数组。
DataOutput和DataOutputStream都不提供接受ByteBuffer的写方法。但是,将ByteBuffer写入DataOutputStream可以通过将OutputStream传递给通道类的实用方法来实现,这是通过WritableByteChannel完成的。但是DataOutput与OutputStream不兼容,也不存在类似的实用方法。
SDK是否提供任何有效的例程来执行此操作?我不希望创建一个中间字节数组,并使用批量get操作遍历ByteBuffer (有效地复制WritableByteChannel实现的代码)。
发布于 2018-05-11 12:00:19
我不相信这件事有什么可说的。一个简单的while循环应该足够了:
DataOutput out = ...
ByteBuffer bb = ...
while (bb.hasRemaining()) {
out.writeByte(bb.get());
}https://stackoverflow.com/questions/50291543
复制相似问题