java.nio包初探

      NIO)库是在 JDK 1.4 中引入的。NIO 弥补了原来的 I/O 的不足,它在标准 Java 代码中提供了高速的、面向块的 I/O。通过定义包含数据的类,以及通过以块的形式处理这些数据,NIO 不用使用本机代码就可以利用低级优化,这是原来的 I/O 包所无法做到的。 

      新的IO库提供的功能和工具很多,下面只是将本人用到的部分功能介绍下:

      以前面用到的文本文件读写为例:

      在I/O中,如果要读些一个文件很简单,只要打开文件读写就可以了: 

 

但是如果使用NIO的库,则要复杂的多:

 

两者对比,可以轻易的发现差别,在NIO中多了Channel和ByteBuffer类,只是这点差距么?结果当然是否定的,如果只是代码的改变,我想NIO就没有存在的必要了,下面对比一下2份代码的运行时间,在读取一份33M的文本文件时,IO类中的方法花费了52346ms,而NIO类中的方法只花费了469ms,也就是说NIO的效率比IO类提高了10倍有余。

channel类:通道,和流最大的区别是,通道是双向的,而流是单向的,同时通道必须通过Buffer去操作,数据不能直接的放入通道。

提到Buffer,就不得不说NIO里提供的各种Buffer类

  • ByteBuffer
  • CharBuffer
  • ShortBuffer
  • IntBuffer
  • LongBuffer
  • FloatBuffer
  • DoubleBuffer
  • 这些类几乎涵盖了所有的基本类型,这也就是说Channel+Buffer的组合可以对任意文件的操作。

    众所周知,在电脑系统中,I/O的处理速度是最慢的,在程序涉及I/O操作时,必须不断地等待I/O操作的完成,造成效率低下,而使用Buffer则可以大幅缓解这个情况,只有当Buffer满或者Buffer空的时候才会对I/O进行请求,大幅提高程序的执行效率

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值