Java NIO简介

Java nio (new io) 是从java 1.4 版本开始引入有的一个新的IO API 可以替代标准的java io API.

NIO 和原来的io有同样的作用和目的,但是使用方式完全不通,NIO支持面向缓存区的基于通道的IO操作,NIO将以更加高效的方式进行文件的读写操作。

  • Java.nio中拥有3个概念 selector channel 和 buffer 在java.nio中我们是面向块(blocl)或是缓冲区(buffer)编程的 buffer本事就是一个堆存区域地址是线上他就是一个数组,数据的读和写都是通过buffer来实现的

  • 除了数组之外,buffer还提供了对于数据的结构化访问方式,并且可以追踪到系统的读写过程

  • java中的8种原生数据类型都有各自对应的buffer类型 如intbuffer longbuffer bytebuffer charbuffer boolean除外

  • Channel 指的是可以向其写入数据或是从中读取数据对象,它类似于 java中的stream

  • 所有数据的读写都是通过buffer来进行的,永远不过出现直接向channel写入数据的情况,或是直接从channel读取数据的情况

  • 与stream不同的是 channel是双向的 一个流只可能是inputstream 或是outputstream,channel打开后可以进行读取写入或是读写

  • 由于channel是双向的因此他能更好的放映出操作系统的真实情况,在linux系统中底层操作系统的通道就是双向的

java io 和 nio的区别

image.png
旧站配图 1 未恢复 · 原 OSS 存储桶已经删除,原始地址已记录在迁移清单中。