好热闹

好热闹

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());
加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。