java nio

jdk 1.4 java.nio 引入新的Java i/o类库,目的在于提高速度

旧的io也已经使用nio重新实现过,以便充分利用这种速度提高

速度提高来自: 通道和缓冲器,更接近与系统io执行方式

唯一直接和通道交互的缓冲器是ByteBuffer

旧io类库中有三个类被修改用以产生FileChannel,

分别为,FileInputStream,FileOutputStream,RandomAccessFile

这些是字节操作流,与底层nio性质一致

java.nio.channels.Channels类提供实用方法用以产生Reader和Writer类

Java NIO 由以下几个核心部分组成:

  • Channels

  • Buffers

  • Selectors

Channel 和 Buffer

基本上,所有的 IO 在NIO 中都从一个Channel 开始。Channel 有点象流。 数据可以从Channel读到Buffer中,也可以从Buffer 写到Channel中

JAVA NIO中的一些主要Channel的实现:

  • FileChannel

  • DatagramChannel

  • SocketChannel

  • ServerSocketChannel

Java NIO里关键的Buffer实现:

  • ByteBuffer

  • CharBuffer

  • DoubleBuffer

  • FloatBuffer

  • IntBuffer

  • LongBuffer

  • ShortBuffer

buffer基本操作

  1. 写入数据到Buffer

  2. 调用flip()方法

  3. 从Buffer中读取数据

  4. 调用clear()方法或者compact()方法

  5. 常用方法

  6.  1 /**
     2 返回此缓冲区的容量。
     3 **/
     4 public final int capacity()
     5 /**
     6 public final int limit()
     7 返回此缓冲区的限制
     8 **/
     9 public final int limit()
    10     /**
    11 返回此缓冲区的位置。
    12 13     **/
    14 public final int position()
    15  /**
    16    参数:
    17    newLimit-新的限值;必须为非负且不大于此缓冲区的容量
    18 **/
    19 public final Buffer position(int newPosition)
    20     
    21  /**
    22  重设缓冲区,在写入之前调用,改变缓冲的指针
    23  **/
    24  public final Buffer flip()
    25     
    26 /**
    27 恢复缓冲区中的标记位置
    28 **/
    29 public final Buffer reset()
    30     
    31   /**
    32  判断当前位置和限制之间是否有内容
    33   **/
    34 public final boolean hasRemaining()
    35   

     


 

posted @ 2020-01-08 16:59  webzom  阅读(105)  评论(0)    收藏  举报