传统的I/O速度相对照较慢,它会成为系统性能的瓶颈,所以在java1.4之后提供了NIO。它是一种全新的流:它具有下面特性:
1.为全部的原是类型提供Buffer缓存支持。
2.使用java.nio.charset.Charset作为字符编码解码解决方式。
3.添加通道(Channel)对象,作为新的原始I/O抽象;
4.支持锁和内存映射文件的文件訪问接口;
5.提供基于Selector的异步网络I/O。
NIO是一种全新的流。跟流式的I/O不同。NIO是基于块的。它以块为基本单位处理数据。在NIO中,最为重要的两个组件是缓冲Buffer和通道Channel。如图这是他们指甲的关系
从上图的关系看来。Channel是一个双向的通道,就可以读又能够写。
如今。从性能上来比較一下io和Nio的性能差异吧。这是一个文件复制的样例,文件大小均为152m,缓存设置成1m:
public class CopyFile {
public static void main(String args[]) {
String path = "E:\\temp_nio.tmp";
String new_path = "E:\\demo\\nio.tmp";
long start = System.currentTimeMillis