NIO之Buffer

左手的ㄟ右手 2023-03-02 10:29 245阅读 0赞

Buffer

其实在Buffer中官方的javadoc中已经讲得非常清楚了,本篇博客是本人做为笔记使用。
下面是我截取的javadoc很详细的介绍了关于mark,position,limit,capacity以及常用方法clear,flip,rewind。
在这里插入图片描述
以下是我使用的一个案例

  1. public static void test1(){
  2. //创建缓冲区
  3. ByteBuffer buff = ByteBuffer.allocate(1024);
  4. System.out.println("-----allocate-----");
  5. System.out.println(buff.position());
  6. System.out.println(buff.limit());
  7. System.out.println(buff.capacity());
  8. //存入数据
  9. System.out.println("-----put-----");
  10. buff.put("abcde".getBytes());
  11. System.out.println(buff.position());
  12. System.out.println(buff.limit());
  13. System.out.println(buff.capacity());
  14. //切换成读模式
  15. System.out.println("-----flip-----");
  16. buff.flip();
  17. System.out.println(buff.position());
  18. System.out.println(buff.limit());
  19. System.out.println(buff.capacity());
  20. //读数据
  21. System.out.println("-----get-----");
  22. byte[] temp = new byte[buff.limit()];
  23. buff.get(temp);
  24. System.out.println(new String(temp));
  25. System.out.println(buff.position());
  26. System.out.println(buff.limit());
  27. System.out.println(buff.capacity());
  28. //重复读
  29. System.out.println("-----rewind-----");
  30. buff.rewind();
  31. System.out.println(buff.position());
  32. System.out.println(buff.limit());
  33. System.out.println(buff.capacity());
  34. //清空缓冲区
  35. System.out.println("-----clear-----");
  36. buff.clear();
  37. System.out.println(buff.position());
  38. System.out.println(buff.limit());
  39. System.out.println(buff.capacity());
  40. }

输出结果

-——allocate——-
0
1024
1024
-——put——-
5
1024
1024
-——flip——-
0
5
1024
-——get——-
abcde
5
5
1024
-——rewind——-
0
5
1024
-——clear——-
0
1024
1024

个人从这位老师的视频学习到了不少,大家也可以看下:https://www.bilibili.com/video/BV14W411u7ro

发表评论

表情:
评论列表 (有 0 条评论,245人围观)

还没有评论,来说两句吧...

相关阅读

    相关 NIOBuffer

    Buffer 其实在Buffer中官方的javadoc中已经讲得非常清楚了,本篇博客是本人做为笔记使用。 下面是我截取的javadoc很详细的介绍了关于mark,po

    相关 NIOBuffer

    在上一篇文章中聊了一下[Channel][],这篇文章聊一下Java NIO中的另一个重要的组件:`Buffer`。 Buffer的概念 首先我们先看一下`Buffer

    相关 NIOBuffer channel

    java NIO的通道类似流,但又有些不同: 既可以从通道中读取数据,又可以写数据到通道。但流的读写通常是单向的。 通道可以异步地读写。 通道中的数据总是要先读到一个Buffe

    相关 Java NIOBuffer

    缓冲区基础 本质上,缓冲区是就是一个数组。所有的缓冲区都具有四个属性来提供关于其所包含的数组的信息。它们是: 容量(Capacity) 缓冲区能够容纳的数据元素的

    相关 NIOBuffer

    > Java NIO中的Buffer用于和NIO通道进行交互。数据是从通道读入缓冲区,从缓冲区写入到通道中的。缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存。这块内

    相关 java NIObuffer

    Java NIO中的Buffer用于和NIO通道进行交互。如你所知,数据是从通道读入缓冲区,从缓冲区写入到通道中的。 缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内