java文件操作之NIO[64]

java文件操作之NIO[64]


文章目录

  • java文件操作之NIO[64]
  • 一、NIO简介
  • 二、代码演示
  • 三.小结



一、NIO简介

NIO是jdk1.4之后加入的,目的是可以实现高速IO,NIO将耗时的io操作转移到操作系统,可极高提升速度;
流与块:

NIO重要区别在于数据打包和传输方式,原来以io的流的方式处理数据,而NIO以块的方处理数据;每一个操作都在一步中产生一个数据块,按块处理数据很快,但缺乏优雅型和简单性;

面向流的io一次只处理一个字节,所以很慢;

缓冲区:NIO中所有数据都使用缓冲区处理,缓冲区实质上就是字节数组,也可以更改别的类型,还提供了对数据的结构化访问,而且还可以跟踪系统的读写进程.

缓冲区类型:

最常用的缓冲区类型是ByteBuffer.一个ByteBuffer可以在其底层字节数组上进行get/set操作(即字节的获取和设置).ByteBuffer不是NIO中唯一的缓冲区类型,事实上,对于每一种基本java类型都有一种缓冲区类型;

创建类型:

ByteBuffer,
CharBuffer,
ShortBuffer,
InBuffer,
LongBuffer,
FloatBuffer,
DoubleBuffer.

二、代码演示

/创建一个字节缓冲区,申请6个字节内存空间,超出则报错
ByteBuffer bbf=ByteBuffer.allocate(6);
//当前元素个数
System.out.println(bbf.position());
//当前内存限制,或元素总个数
System.out.println(bbf.limit());
//总空间
System.out.println(bbf.capacity());
//向缓冲区写入数据
bbf.put((byte) 10);
bbf.put((byte) 20);
bbf.put((byte) 30);
bbf.put((byte) 40);
bbf.put((byte) 50);
bbf.put((byte) 60);
//缓冲区反转,limit变成最后一个元素下标
bbf.flip();
//判断在当前位置和限制之间是否有元素
if (bbf.hasRemaining()){
    //返回当前位置与限制之间的元素数
    for (int i=0;i<bbf.remaining();i++){
        byte b=bbf.get(i);
        System.out.println(b);
    }
}

三.小结

本章概述了java中的NIO流,NIO是实现高速传输的流,但会耗费当前操作系统的性能,可在开发中选择性使用;
有哪里不足或者有更好的建议,欢迎留言吐槽,有哪里不懂的小伙伴,可以私信我,我会一一答复,感谢认可,感谢支持!

你可能感兴趣的:(java,nio,jvm)