- バッファにデータを書き込む [書き込みモードで、bytebuffer を作成し、clear ()、compact () を実行します]
channel.read(buffer)
2. bufferのputメソッド
buffer.put(byte) buffer.put((byte)'a')..
buffer.put(byte[])
- バッファからデータを読み取る
1. channelのwriteメソッド
2. bufferのgetメソッド //getメソッドを呼び出すたびに、positionの位置に影響を与えます。
3. rewindメソッド(アコーディオン)、positionを0にリセットするためのもので、データの繰り返し読み取りに使用します。
4. mark&resetメソッド、markメソッドでマーク(position)を設定し、resetメソッドでマークに戻り、再度実行します。
5. get(i)メソッド、特定のpositionのデータを取得しますが、positionの位置に影響を与えません。
- 文字列操作
- 文字列を Buffer に保存する
ByteBuffer buffer = ByteBuffer.allocate(10);
buffer.put("sunshuai".getBytes());
buffer.flip();
while (buffer.hasRemaining()) {
System.out.println("buffer.get() = " + (char)buffer.get());
}
buffer.clear();
ByteBuffer buffer = Charset.forName("UTF-8").encode("sunshuai");
1、encodeメソッドは、文字列を文字セットでエンコードしてByteBufferに保存します。
2、自動的にByteBufferを読み取りモードに設定し、flipメソッドを手動で呼び出すことはできません。
ByteBuffer buffer = StandardCharsets.UTF_8.encode("sunshuai");
while (buffer.hasRemaining()) {
System.out.println("buffer.get() = " + (char) buffer.get());
}
buffer.clear();
1、encodeメソッドは、文字列を文字セットでエンコードしてByteBufferに保存します。
2、自動的にByteBufferを読み取りモードに設定し、flipメソッドを手動で呼び出すことはできません。
ByteBuffer buffer = ByteBuffer.wrap("sunshuai".getBytes());
while (buffer.hasRemaining()) {
System.out.println("buffer.get() = " + (char) buffer.get());
}
buffer.clear();
- Buffer のデータを文字列に変換する
ByteBuffer buffer = ByteBuffer.allocate(10);
buffer.put("孙".getBytes());
buffer.flip();
CharBuffer result = StandardCharsets.UTF_8.decode(buffer);
System.out.println("result.toString() = " + result.toString());