- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
本文由majinshou贡献
pdf文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。
Java IO 完全总结
本篇主要讲述 IO 相关的内容,主要包括:与 IO 相关的简单的历史背景知识;Java IO 的简单分类;与 IO 设计相关的两个模式;同时列举几个简单的例子;分析 其中几个实现的源代码;最后给大家一些简单扩展的例子。治学先治史,下面我们先从简单的历史开始吧!
一、 历史背景
“对语言设计人员来说,创建好的输入/输出系统是一项特别困难的任务。” ――《Think in Java》 无论是系统、还是语言的设计中 IO 的设计都是异常复杂的。面临的最大的挑战一般是如何覆盖所有可能的因素,我们不仅仅要考虑文件、控制台、网络、内存等 不同的种类,而且要处理大量的不同的读取方式,如:顺序读取、随机读取,二进制读取、字符读取,按行读取、按字符读取…… Linux 是第一个将设备抽象为文件的操作系统,在 Linux 中所有的外部设备都可以用读取文件的方法读取,这样编程人员就可以以操作文件的方法操作任何设备。 C++在 IO 方面也做了一些改进――引进了流的概念,我们可以通过 cin、cout 读写一些对象。Java 语言在 IO 设计方面取得较大的成功,它是完全面向对象的,主要 采用装饰器模式避免大量的类,包括了最大的可能性,提供了较好的扩展机制…… “Java 库的设计者通过创建大量类来攻克这个难题。事实上,Java 的 IO 系统采用了如此多的类,以致刚开始会产生不知从何处入手的感觉(具有讽刺意味的是, Java 的 IO 设计初衷实际要求避免过多的类)。” 上面一段来自《Think in Java》,确实很多初学者刚刚学习 java 的 IO 时会比较茫然,不过等我们知道装饰器模式 (Decorator)的用意、场景及其在 Java 的 IO 包中的使用,你可能会真正领会整个 IO 的 FrameWork。
IO 二、IO 的分类
Java IO 一般包含两个部分:1.java.io 包中堵塞型 IO;2.java.nio 包中的非堵塞型 IO,通常称为 New IO。学过操作系统的朋友都知道系统运行的瓶颈一般在于 IO 操作,一般打开某个 IO 通道需要大量的时间,同时端口中不一定就有足够的数据,这样 read 方法就一直等待读取此端口的内容,从而浪费大量的系统资源。有人 也许会提出使用 java 的多线程技术啊!但是在当前进程中创建线程也是要花费一定的时间和系统资源的,因此不一定可取。Java New IO 的非堵塞技术主要采用了 Observer 模式,就是有一个具体的观察者和=监测 IO 端口,如果有数据进入就会立即通知相应的应用程序。这样我们就避免建立多个线程,同时也避免了 read 等待 的时间。不过本篇主要讲述 java 的堵塞型 IO,就是我们通常应用的那个包。 打开你的 java.io 包你可以看到 Java 的 IO 包含大量的类和接口(JDK1.6 中包含 83 个类或者接口),如此众多的类和接口似乎无从下手。下面就将 IO 简单地分 类。Java 的 IO 主要包含三个部分:1.流式部分――IO 的主体部分;2.非流式部分――主要包含一些辅助流式部分的类,如:File 类、RandomAccessFile 类和 FileDescriptor 等类;3.文件读取部分的与安全相关的类,如:SerializablePermission 类。以及与本地操作系统相关的文件系统的类,如:FileSystem 类和 Win32FileSystem 类和 WinNTFileSystem 类。 流式部分可以概括为:两个对应一个桥梁。两个对应指:1.字节流(Byte Stream)和字符流(Char Stream)的对应;2.输入和输出的对应。一个桥梁指:从 字节流到字符流的桥梁。对应于输入和输出为 InputStreamReader 和 OutputStreamWriter。
在流的具体类中又可以具体分为:1.介质流(Media Stream 或者称为原始流 Raw Stream)――主要指一些基本的流,他们主要是从具体的介质上,如:文件、 内存缓冲区(Byte 数组、Char 数组、StringBuffer 对象)等,读取数据;2.过滤流(Filter Stream)――主要指所有 FilterInputStream/FilterOutputStream 和 FilterReader/FilterWriter 的子类,主要是对其包装的类进行某些特定的处理,如:缓存等。
IO 三、IO 中的流
流具有最基本的特
文档评论(0)