28

ByteBuffer最大 (4 + size) bytes(つまり、整数の後にsize文字が続く) を保持できるがあります。ただし、 に書き込まれる文字数はByteBufferよりも少ない場合がありsizeます。

だから私は疑問に思っていましたがByteBuffer、合計サイズだけでなく、何文字が書き込まれたかを判断する方法はありますか? limitpositionそしてそのようなものは私が求めているものではないようです。

ご協力いただきありがとうございます!

4

2 に答える 2

38

ByteBuffer に書き込んだ後、書き込んだバイト数はメソッドで確認できますposition()

バッファの場合flip()、バッファ内のバイト数はlimit()またはremaining()メソッドで見つけることができます。

その後、バッファの一部を読み取ると、残りのバイト数はメソッドで見つけることができますremaining()

于 2013-06-02T02:06:59.513 に答える
3
DatagramChannel channel = DatagramChannel.open();
ByteBuffer bb = ByteBuffer.allocate(5+size);
channel.receive(bb);
bb.flip();
// actual length of received packet
int len = bb.remaining();
于 2015-12-15T19:42:02.470 に答える