2015-06-20 59 views
2

虽然研究ByteBuffer类我一想到包裹的ByteBuffer数组可能被构造如下:ByteBuffer的初始“模式”是什么?

byte data[] = new byte[10]; 
// Populate data array 
ByteBuffer myBuffer = ByteBuffer.wrap(data); 
int i = myBuffer.getInt(); 

我想其中,可检索前4个字节我的字节数组为int值的。然而,正如我进一步研究,我似乎找到字节缓冲区有两种模式其中读取和写入,我们可以翻转它们之间使用flip()方法。然而,由于翻转基本上是一个触发器,因此它预先假定了知道初始值在读和写状态之间有意义的翻转。

什么是字节缓冲区的初始状态的定义是什么?

  • 写?
  • 读?
  • 的它是如何创建(例如,分配VS套)的函数?

回答

3

严格地说,ByteBuffer本身并不追踪它是“读取”还是“写入”。这只是它如何使用的功能。一个ByteBuffer可以随时读写。我们之所以说flip是为了切换“模式”,是因为它是写入缓冲区,翻转缓冲区,然后读取缓冲区的常见任务的一部分。

的确,分配并包裹设置的限制和为等于该阵列大小的容量,和位置为零。这意味着读取操作可以读取整个数组,写入操作可以填充整个数组。因此,您可以使用新分配或包装的ByteBuffer进行读取或写入。