nio学习–核心概念与基本读写-编程开发技术

nio学习–核心概念与基本读写-编程开发技术

ID:30777187

大小:54.00 KB

页数:5页

时间:2019-01-03

nio学习–核心概念与基本读写-编程开发技术_第1页
nio学习–核心概念与基本读写-编程开发技术_第2页
nio学习–核心概念与基本读写-编程开发技术_第3页
nio学习–核心概念与基本读写-编程开发技术_第4页
nio学习–核心概念与基本读写-编程开发技术_第5页
资源描述:

《nio学习–核心概念与基本读写-编程开发技术》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、NIO学习-核心概念与慕本读写-编程开发技术NI0学习-核心概念与基本读写原文出处:xiaoluo501395377这两天花了时间学习了java的nio,看的书是RonHitchens著的《JavaNIO》,总的來说,这本书真的写的非常好,而且整本书将j3V3nio的内容从底层讲了个遍,书不厚,但是确实值得一读,这里总结一下学习后的一些心得。学习过程中既详细看完了《JavaNIO》这本书,同时也参照了http://zhangshixi.iteye.com/blog/679959该作者写的关于NI0的博文。好了,我们正式开始NI0的学习吧。首先,简单说说I/O和

2、NI0—些概念性的东西吧。1/0流或者输入/输出流指的是计算机与外部世界或者一个程序与计算机的其余部分的之间的接口。新的输入/输IW(NI0)库是在JDK1.4中引入的。NI0弥补了原来的I/O的不足,它在标准Java代码屮提供了高速的、面向块的I/O。原来的I/O库与NI0最重要的区别是数据打包和传输的方式的不同,原來的T/0以流的方式处理数据,而NI0以块的方式处理数据。面向流的I/O系统一次一个字节地处理数据。一个输入流产生一个字节的数据,一个输出流消费一个字节的数据。为流式数据创建过滤器非常容易。链接儿个过滤器,以便每个过滤器只负责单个复杂处理机制的一

3、部分,这样也是相对简单的。不利的一面是,面向流的1/0通常相当慢。NI0与原來的I/O有同样的作用和目的,但是它使用块I/O的处理方式。每一个操作都在一步屮产生或者消费一个数据块。按块处理数据比按(流式的)字节处理数据要快得多。但是面向块的I/O缺少一些面向流的I/O所具有的优雅性和简单性。我们首先从一个例子开始NTO的学习我们分别用I/O以及NI0来实现从一个文件屮读取内容并将其打印出来,看看1/0和N10的特点。使用10来读取指定文件中的前1024字节并打印出来:/***使用10读取指定文件的前1024个字节的内容。*@paramargs*©throwsE

4、xception*/publicstaticvoidmain(String[]args)throwsExceptionFilclnputStrcamis=newFilclnputStrcam(,zGitllub・txt〃);byte[]buffer=newbyte[1024];is.read(buffer);System・out・println(newString(buffer));is.close();}/***使用N10读取指定文件的前1024个字节的内容。*@paramargs*@throwsException*/publicstaticvoidni3i

5、n(String[]args)throwsException{FilelnputStreamis=newFi1elnputStream(,zGitHub.txt");//为该文件输入流生成唯一的文件通道FileChannelFilcChannclchanncl二is.gctChanncl();〃开辟一个长度为1024的字节缓冲区ByteBufferbuffer二ByteBuffer.allocate(1024);channcl.read(buffer);System,out.printIn(newString(buffer,array()));System,o

6、ut.println(buffer.isDirectO+“,"+buffer.isReadOnly());channel.close();is.close();}从上面的例子中可以看出,NI0以通道Channel和缓冲区Buffer为基础来实现而向块的10数据处理。下而将讨论并学习NI0库的核心概念以及从高级的特性到底层编程细节的儿乎所有方面。NI0中的读和写1)???概述:读和写是I/O的基本过程。从一个通道中读取很简单:只需创建一个缓冲区,然后让通道将数据读到这个缓冲区中。写入也相当简单:创建一个缓冲区,用数据填充它,然后让通道用这些数据来执行写入操作。1

7、)???从文件屮读取:如果使用原来的I/O,那么我们只需创建一个FilelnputStream并从它那里读取。而在NIO屮,情况稍有不同:我们首先从FilelnputStream获取一个FileChannel对象,然后使用这个通道來读取数据。在NIO系统中,任何时候执行一个读操作,您都是从通道中读取,但是您不是直接从通道读取。因为所冇数据最终都驻留在缓冲区屮,所以您是从通道读到缓冲区中。因此读取文件涉及三个步骤:(1)从FilelnputStream获取Channelo(2)创建Buffero(3)将数据从Channel读到Buffer中。现在,让我们看一下这

8、个过程。//第一步是获取通道。我们从F

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。