1、 本科生毕业设计(论文) 外文资料翻译 ( 2008 届) 论文题目 乐住沪网站 界面功能模块设计与实现 学 生 姓名 毛斌斌 学号 0865231022 专业 计算机科学与技术 班级 晟欧 0801 指 导 教师 杨磊、梁锡坤 职称 杭州国际服务工程学院(信息科学与工程学院)教学部制 1 一、外文资料翻译 (译文不少于 2000 汉字) 1所译外文资料: 作者: Bruce Eckel 书名(或论文题目): Thinking in Java (3th Edition) 出版社(或刊物名称或可获得地址): Prentice Hall 出版时间(或卷期号): May 2005 所译起止页码: 2
2、译成中文: 第 10 章 Java IO 系统 “对语言设计人员来说,创建好的输入输出系统是一项特 别困难的任务。” 由于存在大量不同的设计方案,所以该任务的困难性是很容易证明的。其中最大的挑战似乎是如何覆盖所有可能的因素。不仅有三种不同的种类的 IO 需要考虑(文件、控制台、网络连接),而且需要通过大量不同的方式与它们通信(顺序、随机访问、二进制、字符、按行、按字等等)。 Java 库的设计者通过创建大量类来攻克这个难题。事实上, Java 的 IO 系统采用了如此多的类,以致刚开始会产生不知从何处入手的感觉(具有讽刺意味的是, Java 的 IO 设计初衷实际要求避免过多的类)。从 Jav
3、a 1.0 升级到 Java 1.1 后, IO 库的设计也发生了显著的变化。此时并非简单地用新库替换旧库, Sun 的设计人员对原来的库进行了大手笔的扩展,添加了大量新的内容。因此,我们有时不得不混合使用新库与旧库,产生令人无奈的复杂代码。 本章将帮助大家理解标准 Java 库内的各种 IO 类,并学习如何使用它们。本章的第一部分将介绍“旧”的 Java 1.0 IO 流库,因为现在有大量代码仍在使用那个库。本章剩下的部分将为大家引入 Java 1.1 IO 库的一些新特性。注意若用 Java 1.1 编译器来编译本章第一部分介绍的部分代码,可能会得到一条“不建议使用该特性 ”( Depre
4、cated feature)警告消息。代码仍然能够使用;编译器只是建议我们换用本章后面要讲述的一些新特性。但我们这样做是有价值的,因为可以更清楚地认识老方法与新方法之间的一些差异,从而加深我们的理解(并可顺利阅读为 Java 1.0 写的代码)。 10.1 输入和输出 可将 Java 库的 IO 类分割为输入与输出两个部分,这一点在用 Web 浏览器阅读联机 Java 类文档时便可知道。通过继承,从 InputStream(输入流)衍生的所有类都拥有名为 read()的基本方法,用于读取单个字节或者字节数组。类似地 ,从 OutputStream 衍生的所有类都拥有基本方法 write(),用
5、于写入单个字节或者字节数组。然而,我们通常不会用到这些方法;它们之所以存在,是因为更复杂的类可以利用它们,以便提供一个更有用的接口。因此,我们很少用单个类创建自己的系统对 2 象。一般情况下,我们都是将多个对象重叠在一起,提供自己期望的功能。我们之所以感到 Java的流库( Stream Library)异常复杂,正是由于为了创建单独一个结果流,却需要创建多个对象的缘故。 很有必要按照功能对类进行分类。库的设计者首先决定与输入有关的所有类都从 InputStream继承,而与输出有关的所有类都从 OutputStream 继承。 10.1.1 InputStream 的类型 InputStre
6、am 的作用是标志那些从不同起源地产生输入的类。这些起源地包括(每个都有一个相关的 InputStream 子类): (1) 字节数组 (2) String 对象 (3) 文件 (4) “管道”,它的工作原理与现实生活中的管道类似:将一些东西置入一端,它们在另一端出来。 (5) 一系列其他流,以便我们将其统一收集到单独一个流内。 (6) 其他起源地,如 Internet 连接等 (将在本书后面的部分讲述)。 除此以外, FilterInputStream 也属于 InputStream 的一种类型,用它可为“破坏器”类提供一个基础类,以便将属性或者有用的接口同输入流连接到一起。这将在以后讨论。
7、 类 功能 构建器参数如何使用 ByteArrayInputStream 允许内存中的一个缓冲区作为 InputStream 使用 从中提取字节的缓冲区作为一个数据源使用。通过将其同一个 FilterInputStream 对象连接,可提供一个有用的接口 StringBufferInputStream 将一个 String 转换成 InputStream 一个 String(字串)。基础的实施方案实际采用一个 StringBuffer(字串缓冲)作为一个数据源使用。通过将其同一个FilterInputStream 对象连接,可提供一个有用的接口 FileInputStream 用于从文件读取信
8、息 代表文件名的一个 String,或者一个 File 或FileDescriptor 对象作为一个数据源使用。通过将其同一个 FilterInputStream 对象连接,可提供一个有用的接口 PipedInputString 产生 为相关的 PipedOutputStream 写的数据。实现了“管道化”的概念 PipedOutputStream作为一个数据源使用。通过将其同一个 FilterInputStream 对象连接,可提供一个有用的接口 SequenceInputStream 将两个或更多的 InputStream 对象转换成单个 InputStream 使用 两个InputStream 对象或者一个 Enumeration,用于 InputStream 对象的一个容器作为一个数据源使用。通过将其同一个 FilterInputStream 对象连接, 可提供一个有用的接口 FilterInputStream 对作为破坏器接口使用的类进行抽象;那个破坏器为其他 InputStream 类