开发者社区> 问答> 正文

[@wangccsy][¥20]Java 中怎么创建 ByteBuffer?

问题来自Java技术沙龙的李博
Java线下沙龙报名链接:https://yq.aliyun.com/activity/796

展开
收起
李博 bluemind 2018-12-14 16:25:30 1849 0
1 条回答
写回答
取消 提交回答
  • 前一个帐号wangccsy@126.com不知道怎么的就成了企业帐号,改不成个人。所以重新注册了一个个人帐号。老程序员。精通JAVA,C#,数据库,对软件开发过程和流程熟悉。考取系统分析师,项目管理师和系统架构设计师等软件资格考试认证。愿意和大家一起前进。

    ByteBuffer定义了4个static方法来做创建工作:
    ByteBuffer allocate(int capacity) //创建一个指定capacity的ByteBuffer。
    ByteBuffer allocateDirect(int capacity) //创建一个direct的ByteBuffer,这样的ByteBuffer在参与IO操作时性能会更好
    ByteBuffer wrap(byte [] array)
    ByteBuffer wrap(byte [] array, int offset, int length) //把一个byte数组或byte数组的一部分包装成ByteBuffer。
    一个使用ByteBuffer的例子,这个例子从标准输入不停地读入字符,当读满一行后,将收集的字符
    写到标准输出:
    public static void main(String [] args)
    throws IOException
    {
    // 创建一个capacity为256的ByteBuffer
    ByteBuffer buf = ByteBuffer.allocate(256);
    while (true) {
    // 从标准输入流读入一个字符
    int c = System.in.read();
    // 当读到输入流结束时,退出循环
    if (c == -1)
    break;
    // 把读入的字符写入ByteBuffer中
    buf.put((byte) c);
    // 当读完一行时,输出收集的字符
    if (c == 'n') {
    // 调用flip()使limit变为当前的position的值,position变为0,
    // 为接下来从ByteBuffer读取做准备
    buf.flip();
    // 构建一个byte数组
    byte [] content = new byte[buf.limit()];
    // 从ByteBuffer中读取数据到byte数组中
    buf.get(content);
    // 把byte数组的内容写到标准输出
    System.out.print(new String(content));
    // 调用clear()使position变为0,limit变为capacity的值,
    // 为接下来写入数据到ByteBuffer中做准备
    buf.clear();
    }
    }
    }

    2019-07-17 23:21:12
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载