zoukankan      html  css  js  c++  java
  • NIO基础方法一

    1.remaining();返回当前位置与limit之间得元素数。

    int[] intArray={1,2,3,4};
            IntBuffer intBuffer=IntBuffer.wrap(intArray);
            intBuffer.limit(3);
            intBuffer.position(1);
            System.out.println(intBuffer.remaining());

     2.isDirect() 判断是否为直接缓冲区。

    ByteBuffer byteBuffer=ByteBuffer.allocateDirect(100);
            System.out.println(byteBuffer.isDirect());

    3.clear()还原缓冲区得状态,是状态,不是数据;比如将position=0.market丢失掉。

    byte[] byteArray=new byte[]{1,2,3};
            ByteBuffer byteBuffer=ByteBuffer.wrap(byteArray);
            byteBuffer.position(2);
            byteBuffer.limit(3);
            byteBuffer.mark();
            
            byteBuffer.clear();
            System.out.println("position:"+byteBuffer.position()+";limit:"+byteBuffer.limit());
            try {
                byteBuffer.reset();
            } catch (Exception e) {
                System.out.println("market已经丢失");
            }

    4.flip() 向缓冲区写入一些数据后,下一步直接读取缓冲区中得数据之前,以改变limit与position得值。

    byte[] byteArray=new byte[]{1,2,3};
            ByteBuffer byteBuffer=ByteBuffer.wrap(byteArray);
            byteBuffer.position(2);
            byteBuffer.mark();
            
            byteBuffer.flip();
            System.out.println("position:"+byteBuffer.position()+";limit:"+byteBuffer.limit());
            try {
                byteBuffer.reset();
            } catch (Exception e) {
                System.out.println("market已经丢失");
            }

     5.hasArray()判断此缓冲区是否具有可访问得底层实现数组。

    ByteBuffer byteBuffer=ByteBuffer.allocate(100);
            byteBuffer.put((byte) 1);
            byteBuffer.put((byte) 2);
            System.out.println(byteBuffer.hasArray());
            
            ByteBuffer byteBuffer2=ByteBuffer.allocateDirect(100);
            byteBuffer2.put((byte) 1);
            byteBuffer2.put((byte) 2);
            System.out.println(byteBuffer2.hasArray());

    6.hasRemaining() 判断当前位置与限制之间是否有元素。

    byte[] byteArray=new byte[]{1,2,3};
            ByteBuffer bytebuffer=ByteBuffer.wrap(byteArray);
            bytebuffer.limit(3);
            bytebuffer.position(2);
            System.out.println(bytebuffer.hasRemaining()+";"+bytebuffer.remaining());

    7.rewind()  position置为0,标记清除掉,limit不变。

    8.clear() position置为0,limit=capacity,market=-1.清除缓冲区得状态。

    9.List.toArrat(T[])  转成数组。

    ByteBuffer buffer1=ByteBuffer.wrap(new byte[]{'a','b','c'});
            ByteBuffer buffer2=ByteBuffer.wrap(new byte[]{'x','y','z'});
            ByteBuffer buffer3=ByteBuffer.wrap(new byte[]{'1','2','3'});
            List<ByteBuffer> list=new ArrayList<ByteBuffer>();
            list.add(buffer1);
            list.add(buffer2);
            list.add(buffer3);
            
            ByteBuffer[] byteBufferArray=new ByteBuffer[list.size()];
            list.toArray(byteBufferArray);
            System.out.println(byteBufferArray.length);
            for(int i=0;i<byteBufferArray.length;i++){
                ByteBuffer eachByteBuffer=byteBufferArray[i];
                while (eachByteBuffer.hasRemaining()) {
                    System.out.print((char) eachByteBuffer.get());
                }
                System.out.println();
            }
  • 相关阅读:
    实现一个基于tcc/tlink的简单的编译链接工具
    从函数指针数组的运用来看程序结构化设计(2)
    从函数指针数组的运用来看程序结构化设计
    crypt()函数
    PHP fopen()函数 打开文件
    PHP 数据库访问
    php中图像处理的常用函数
    PHP Cookie的用法
    Spring的依赖注入
    拦截器
  • 原文地址:https://www.cnblogs.com/guoyansi19900907/p/10961172.html
Copyright © 2011-2022 走看看