- 在 buffer 中寫入數據 [寫模式 創建一個 bytebuffer ,clear (),compact ()]
channel.read(buffer)
2. buffer的put方法
buffer.put(byte) buffer.put((byte)'a')..
buffer.put(byte[])
- 從 buffer 中讀出數據
1. channel的write方法
2. buffer的get方法 //每調用一次get方法會影響,position的位置。
3. rewind方法(手風琴),可以將postion重置成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());