对白酿成语言的设计者来说,创建一个好的输入/输出(I/O)系统是一项更艰难的任务。
现有的大量不同方案已经说明了这一点。挑战似乎来自于要涵盖所有的可能性。不仅存在各
种用于通信的 I/O 源端和接收端(文件、控制台、网络链接等),而且还需要以多种不同
的方式与它们进行通信(顺序、随机存取、缓冲、二进制、按字符、按行、按字等)。
Java类库的设计者是通过创建大量的类来解决这个难题的。一开始,可能会对 Java I/O
系统提供了如此多的类而感到不知所措(具有讽刺意味的是,Java I/O 设计的初衷是为了
避免过多的类)。自从 Java 1.0版本以来,Java 的 I/O 类库发生了明显改变,在原来面
向字节的类中添加了面向字符和基于 Unicode的类。在 JDK1.4中,添加了 nio 类(对于
“新 I/O”这个称呼,从现在这个名字我们仍将要用若干年)用于改进性能及功能。因此,在
充分理解 java I/O 系统以便正确地运用之前,我们需要学习相当数量的类。另外,很有必
要理解 I/O类库的演化过程,即使我们的第一反应是“不要用历史打扰我,只需要告诉我怎
么用。”问题是,如果缺乏历史的眼光,很快我们就会对什么时候该使用某些类,什么时候
不该使用它们而感到迷惑。
涉及到的知识有数据的存储、JAVA IO流、视图、还有对象集合之类的知识
Java档案文件(JAR)
Zip 格式也被应用于 JAR(Java ARchive)文件格式中。这种文件格式就象 Zip 一样可以
将一组文件压缩到单个压缩文件中。同 Java中其他任何东西一样,JAR 文件是跨平台的,
所以不必担心跨平台的问题。声音和图像文件可以像类文件一样被包含在其中。
JAR 文件非常有用,尤其是在涉及因特网应用的时候。如果不采用 JAR 文件,Web 浏览器
为了下载构成一个应用的所有文件时必须重复多次请求 Web 服务器。而且所有这些文件都
是未经压缩的。如果将所有这些文件合并到一个 JAR 文件中,只需向远程服务器发出一次
请求即可。同时,由于采用了压缩技术,可以使传输时间更短。另外,出于安全的考虑,JAR
文件中的每个条目都可以加上数字化签名
JAR 文件由一组压缩文件构成,同时还有一张描述了所有这些文件的“文件清单”。(可
自行创建文件清单,也可以由 jar程序自动生成)。在 JDK文档中,可以找到与 JAR 文件
清单相关的更多资料。