0

ドキュメントを読んでみましたが、制限やマークなどの説明がありません。 ByteBuffer.limit 関数の説明に、制限を返すと書かれているのが気になります。今限界は何ですか?容量と同じか違うか...

一日の終わりに、バッファに「入れた」バイト数を知りたい

サイズ 1024 のバッファを割り当てて、「hello」という単語を書き込むとします。5 バイトがバッファに書き込まれた結果を取得するにはどうすればよいですか?

ありがとう

4

2 に答える 2

2

write() メソッドは、転送された番号付きのバイトを返します。あなたはこれを過度に複雑にしています。

于 2012-05-04T21:18:14.230 に答える
2

知りたいことは、java.io.Buffer のドキュメントで説明されています。

バッファの容量は、バッファに含まれる要素の数です。バッファーの容量が負になることも、変化することもありません。

バッファーの制限は、読み取りまたは書き込みが禁止されている最初の要素のインデックスです。バッファーの制限が負になることはなく、その容量を超えることもありません。

バッファの位置は、次に読み書きする要素のインデックスです。バッファの位置が負になることはなく、その制限を超えることもありません。

不変条件

次の不変条件は、マーク、位置、制限、および容量の値に対して保持されます。

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

新しく作成されたバッファには、常にゼロの位置と未定義のマークがあります。初期制限はゼロの場合もあれば、バッファのタイプとその構築方法に依存するその他の値の場合もあります。新しく割り当てられたバッファーの各要素は、ゼロに初期化されます。

マーキングとリセット

バッファのマークは、reset メソッドが呼び出されたときにその位置がリセットされるインデックスです。マークは常に定義されているわけではありませんが、定義されている場合、負になることはなく、位置よりも大きくなることはありません。マークが定義されている場合、位置または制限がマークより小さい値に調整されると、マークは破棄されます。マークが定義されていない場合、reset メソッドを呼び出すと、InvalidMarkException がスローされます。

于 2012-05-04T13:05:07.193 に答える