NIO学习系列:核心概念及基本读写
url:http://zhangshixi.iteye.com/blog/679959
1.??? 引言?
?? I/O流或者输入/输出流指的是计算机与外部世界或者一个程序与计算机的其余部分的之间的接口。新的输入/输出(NIO)库是在JDK 1.4中引入的。NIO弥补了原来的I/O的不足,它在标准Java代码中提供了高速的、面向块的I/O。
?? 原来的I/O库与NIO最重要的区别是数据打包和传输的方式的不同,原来的 I/O 以流?的方式处理数据,而 NIO 以块?的方式处理数据。?
?? 面向流的I/O系统一次一个字节地处理数据。一个输入流产生一个字节的数据,一个输出流消费一个字节的数据。为流式数据创建过滤器非常容易。链接几个过滤器,以便每个过滤器只负责单个复杂处理机制的一部分,这样也是相对简单的。不利的一面是,面向流的I/O通常相当慢。?
?? NIO与原来的I/O有同样的作用和目的,但是它使用块I/O的处理方式。每一个操作都在一步中产生或者消费一个数据块。按块处理数据比按(流式的)字节处理数据要快得多。但是面向块的I/O缺少一些面向流的I/O所具有的优雅性和简单性。
?
2.??? 从一个例子开始?
?? 下面我们从一个简单的使用IO和NIO读取一个文件中的内容为例,来进入NIO的学习之旅。
?? 使用IO来读取指定文件中的前1024字节并打印出来:
后续:?在下一篇文章中,会具体介绍缓冲区Buffer的内部实现机制,以理解缓冲区如何能够内部地管理自己的资源。有兴趣的可以共同学习、讨论。