好热闹

好热闹

bbbbb

四、NIO的核心API

  • 在 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的位置產生影響。
  • 字符串操作
  1. 字符串存儲到 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();
  1. 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());
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。