java - 将 ByteBuffer 的内容写入 DataOutput?
问题描述
我需要写入 ByteBuffer 的对象被键入为接口DataOutput的实例,而不是作为DataOutputStream类(实现 DataOutput)的实例。我需要假设 ByteBuffer.hasArray() 可以返回 false,所以我无权访问任何底层数组。
DataOutput 和 DataOutputStream 都没有提供接受 ByteBuffer 的写入方法。但是,可以使用 WritableByteChannel 将 ByteBuffer 写入 DataOutputStream,通过将 OutputStream 传递给 Channels 类的实用方法获得。但是 DataOutput 与 OutputStream 的类型不兼容,并且不存在类似的实用方法。
SDK 是否提供任何有效的例程来执行此操作?我宁愿不必创建一个中间字节数组并通过批量获取操作循环通过 ByteBuffer(有效地复制 WritableByteChannel 实现的代码)。
解决方案
我不相信有一个单一的衬里。一个简单的while循环就足够了:
DataOutput out = ...
ByteBuffer bb = ...
while (bb.hasRemaining()) {
out.writeByte(bb.get());
}
推荐阅读
- python - 我怎样才能让 80 位浮点数在 numpy 中工作
- audio - 如何使用 Node.js 设置 Stun 服务器
- c++ - 将一个字符串与数组中的另一个字符串进行比较
- thymeleaf - Thymeleaf - 包含来自同一目录的模板(相对路径)
- swift - 在函数声明警告中找不到 Firebase Firestore 参数“selected_port [out]”
- javascript - 如何使用javascript在段落中显示代码
- c - C中的和积
- javascript - 如何从 OAuth facebook nodejs 获得生日?(我可以在终端登录但无法访问)
- excel - 如何通过列的数值定义范围?
- python - 升级到 Grakn 核心和 python API 1.8.1 使几个 Type 方法失败 - 如何修复它?