第10章 Java IO系统

第10章 Java IO系统

ID:32974688

大小:387.08 KB

页数:29页

时间:2019-02-18

第10章 Java IO系统_第1页
第10章 Java IO系统_第2页
第10章 Java IO系统_第3页
第10章 Java IO系统_第4页
第10章 Java IO系统_第5页
资源描述:

《第10章 Java IO系统》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、第10章JavaIO系统“对语言设计人员来说,创建好的输入/输出系统是一项特别困难的任务。”由于存在大量不同的设计方案,所以该任务的困难性是很容易证明的。其中最大的挑战似乎是如何覆盖所有可能的因素。不仅有三种不同的种类的I/O需要考虑(文件、控制台、网络连接),而且需要通过大量不同的方式与它们通信(顺序、随机访问、二进制、字符、按行、按字等等)。Java库的设计者通过创建大量类来攻克这个难题。事实上,Java的I/O系统采用了如此多的类,以致刚开始会产生不知从何处入手的感觉(具有讽刺意味的是,Java的I/O设计初衷实际要求避免过多的类)。从Java

2、1.0升级到Java1.1后,I/O库的设计也发生了显著的变化。此时并非简单地用新库替换旧库,Sun的设计人员对原来的库进行了大手笔的扩展,添加了大量新的内容。因此,我们有时不得不混合使用新库与旧库,产生令人无奈的复杂代码。本章将帮助大家理解标准Java库内的各种I/O类,并学习如何使用它们。本章的第一部分将介绍“旧”的Java1.0I/O流库,因为现在有大量代码仍在使用那个库。本章剩下的部分将为大家引入Java1.1I/O库的一些新特性。注意若用Java1.1编译器来编译本章第一部分介绍的部分代码,可能会得到一条“不建议使用该特性”(Depreca

3、tedfeature)警告消息。代码仍然能够使用;编译器只是建议我们换用本章后面要讲述的一些新特性。但我们这样做是有价值的,因为可以更清楚地认识老方法与新方法之间的一些差异,从而加深我们的理解(并可顺利阅读为Java1.0写的代码)。10.1输入和输出可将Java库的I/O类分割为输入与输出两个部分,这一点在用Web浏览器阅读联机Java类文档时便可知道。通过继承,从InputStream(输入流)衍生的所有类都拥有名为read()的基本方法,用于读取单个字节或者字节数组。类似地,从OutputStream衍生的所有类都拥有基本方法write(),用

4、于写入单个字节或者字节数组。然而,我们通常不会用到这些方法;它们之所以存在,是因为更复杂的类可以利用它们,以便提供一个更有用的接口。因此,我们很少用单个类创建自己的系统对象。一般情况下,我们都是将多个对象重叠在一起,提供自己期望的功能。我们之所以感到Java的流库(StreamLibrary)异常复杂,正是由于为了创建单独一个结果流,却需要创建多个对象的缘故。很有必要按照功能对类进行分类。库的设计者首先决定与输入有关的所有类都从InputStream继承,而与输出有关的所有类都从OutputStream继承。10.1.1InputStream的类型I

5、nputStream的作用是标志那些从不同起源地产生输入的类。这些起源地包括(每个都有一个相关的InputStream子类):(1)字节数组(2)String对象(3)文件(4)“管道”,它的工作原理与现实生活中的管道类似:将一些东西置入一端,它们在另一端出来。(5)一系列其他流,以便我们将其统一收集到单独一个流内。(6)其他起源地,如Internet连接等(将在本书后面的部分讲述)。除此以外,FilterInputStream也属于InputStream的一种类型,用它可为“破坏器”类提供一个基础类,以便将属性或者有用的接口同输入流连接到一起。这将

6、在以后讨论。表10.1InputStream的类型类功能构建器参数/如何使用ByteArrayInputStream允许内存中的一个缓冲区作为InputStream使用从中提取字节的缓冲区/作为一个数据源使用。通过将其同一个FilterInputStream对象连接,可提供一个有用的接口StringBufferInputStream将一个String转换成InputStream一个String(字串)。基础的实施方案实际采用一个StringBuffer(字串缓冲)/作为一个数据源使用。通过将其同一个FilterInputStream对象连接,可提供一

7、个有用的接口FileInputStream用于从文件读取信息代表文件名的一个String,或者一个File或FileDescriptor对象/作为一个数据源使用。通过将其同一个FilterInputStream对象连接,可提供一个有用的接口PipedInputString产生为相关的PipedOutputStream写的数据。实现了“管道化”的概念PipedOutputStream/作为一个数据源使用。通过将其同一个FilterInputStream对象连接,可提供一个有用的接口SequenceInputStream将两个或更多的InputStrea

8、m对象转换成单个InputStream使用两个InputStream对象或者一个Enumeration,用于

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

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

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