java1.0中的IO是流式IO,它只能一个字节一个字节的处理数据,所以IO也叫做Stream IO。
而NIO是为了提升IO的效率而生的,它是以Block的方式来读取数据的。
Stream IO中,input输入一个字节,output就输出一个字节,因为是Stream,所以可以加上过滤器或者过滤器链,可以想想一下web框架中的filter chain。在Stream IO中,数据只能处理一次,你不能在Stream中回退数据。
在Block IO中,数据是以block的形式来被处理的,因此其处理速度要比Stream IO快,同时可以回退处理数据。但是你需要自己处理buffer,所以复杂程度要比Stream IO高。
一般来说Stream IO是阻塞型IO,当线程进行读或者写操作的时候,线程会被阻塞。
而NIO一般来说是非阻塞的,也就是说在进行读或者写的过程中可以去做其他的操作,而读或者写操作执行完毕之后会通知NIO操作的完成。
在IO中,主要分为DataOutPut和DataInput,分别对应IO的out和in。
DataOutPut有三大类,分别是Writer,OutputStream和ObjectOutput。
看下他们中的继承关系: