[size=medium]原来的I/O包和NIO处理数据最大的不同之处在于数据打包(packaged)和传输(transmitted)的方式。正如前面所提到的那样,IO(java.io.*)是以流的方式处理数据的,而NIO是以blocks(块)的方式来处理数据的.
一个[b]流面向(stream-oriented)[/b]的I/O系统在处理数据时是一次只处理一个字节;作为input的stream一次向计算机生产一个byte,作为output的stream一次向计算机要求消费一个byte(计算机生产byte),对stream创建filter是一件非常容易的事情,同时如果你希望通过chain模式将几个filter连在一起也很容易,最终可以将大量复杂的处理分成一个简单,巧妙的处理模式;但是同时,stream-oriented的I/O处理通常非常低效率。
而一个[b]块面向(block-oriented)[/b]的I/O系统成块的处理数据,每次操作都会生产或者消费以block为单位的数据;所以,这种方式会比stream-oriented的处理方式高效地多,但是block-oriented的I/O也缺少以stream-oriented编程时的简单和优雅;[/size]
一个[b]流面向(stream-oriented)[/b]的I/O系统在处理数据时是一次只处理一个字节;作为input的stream一次向计算机生产一个byte,作为output的stream一次向计算机要求消费一个byte(计算机生产byte),对stream创建filter是一件非常容易的事情,同时如果你希望通过chain模式将几个filter连在一起也很容易,最终可以将大量复杂的处理分成一个简单,巧妙的处理模式;但是同时,stream-oriented的I/O处理通常非常低效率。
而一个[b]块面向(block-oriented)[/b]的I/O系统成块的处理数据,每次操作都会生产或者消费以block为单位的数据;所以,这种方式会比stream-oriented的处理方式高效地多,但是block-oriented的I/O也缺少以stream-oriented编程时的简单和优雅;[/size]