如何找出我写入bytebuffer的字节数(java的新增内容)

时间:2012-05-04 12:58:31

标签: java android nio

我已经尝试过阅读文档了,但是没有解释什么是限制,标记等。一个不错的事情是ByteBuffer.limit函数的描述说它返回了限制。现在有什么限制?是否与容量相同或不同......

一天结束时,我想知道我已经把多少字节放入缓冲区

如果我分配大小为1024的缓冲区并在其中写入“hello”。如何将5个字节的结果写入缓冲区?

由于

2 个答案:

答案 0 :(得分:2)

java.io.Buffer documentation.

中说明了您想要了解的内容
  

缓冲区的容量是它包含的元素数量。该   缓冲区的容量永远不会消极,永远不会改变。

     

缓冲区的限制是不应该的第一个元素的索引   被读或写。缓冲区的限制永远不会消极,永远不会   超过其容量。

     

缓冲区的位置是要读取的下一个元素的索引或   书面。缓冲区的位置永远不会消极,永远不会更大   超过其限制。

     

<强>不变量

     

以下不变量适用于标记,位置,限制和   容量值:

0 <= mark <= position <= limit <= capacity
     

新创建的缓冲区始终具有零位和标记   未定义。初始限制可能为零,或者可能是其他限制   值取决于缓冲区的类型和方式   它是建造的。新分配的缓冲区的每个元素都是   初始化为零。

     

标记和重置

     

缓冲区标记是其位置将被重置的索引   调用reset方法。标记并不总是定义,而是何时定义   它被定义为永远不会消极,永远不会大于   位置。如果定义了标记,则在标记时将其丢弃   将位置或限制调整为小于标记的值。如果   标记未定义然后调用重置方法导致   抛出InvalidMarkException。

答案 1 :(得分:2)

write()方法返回传输的编号字节。你过度复杂了。