Welcome 微信登录

首页 / 软件开发 / JAVA

java的压缩类

java的压缩类

java的压缩类2007-05-29 yycnet.yeah.net yyc译Java 1.1也添加一个类,用以支持对压缩格式的数据流的读写。它们封装到现成的IO类中,以提供压缩功能。此时Java 1.1的一个问题显得非常突出:它们不是从新的Reader和Writer类衍生出来的,而是属于InputStream和OutputStream层次结构的一部分。所以有时不得不混合使用两种类型的数据流(注意可用InputStreamReader和OutputStre...
java用Zip进行多文件保存

java用Zip进行多文件保存

java用Zip进行多文件保存2007-05-29 yycnet.yeah.net yyc译提供了Zip支持的Java 1.1库显得更加全面。利用它可以方便地保存多个文件。甚至有一个独立的类来简化对Zip文件的读操作。这个库采采用的是标准Zip格式,所以能与当前因特网上使用的大量压缩、解压工具很好地协作。下面这个例子采取了与前例相同的形式,但能根据我们需要控制任意数量的命令行参数。除此之外,它展示了如何用Checksum类来计算和校验文件的“校...
Java归档(jar)实用程序

Java归档(jar)实用程序

Java归档(jar)实用程序2007-05-29 yycnet.yeah.net yyc译Zip格式亦在Java 1.1的JAR(Java ARchive)文件格式中得到了采用。这种文件格式的作用是将一系列文件合并到单个压缩文件里,就象Zip那样。然而,同Java中其他任何东西一样,JAR文件是跨平台的,所以不必关心涉及具体平台的问题。除了可以包括声音和图像文件以外,也可以在其中包括类文件。涉及因特网应用时,JAR文件显得特别有用。在JAR文件之前,We...
java的对象串联

java的对象串联

java的对象串联2007-05-29 yycnet.yeah.net yyc译Java 1.1增添了一种有趣的特性,名为“对象序列化”(Object Serialization)。它面向那些实现了Serializable接口的对象,可将它们转换成一系列字节,并可在以后完全恢复回原来的样子。这一过程亦可通过网络进行。这意味着序列化机制能自动补偿操作系统间的差异。换句话说,可以先在Windows机器上创建一个对象,对其序列化,然后通过...
寻找类

寻找类

寻找类2007-05-29 yycnet.yeah.net yyc译读者或许会奇怪为什么需要一个对象从它的序列化状态中恢复。举个例子来说,假定我们序列化一个对象,并通过网络将其作为文件传送给另一台机器。此时,位于另一台机器的程序可以只用文件目录来重新构造这个对象吗?回答这个问题的最好方法就是做一个实验。下面这个文件位于本章的子目录下://: Alien.java// A serializable classimport java.io.*;public c...
java序列化的控制

java序列化的控制

java序列化的控制2007-05-29 yycnet.yeah.net yyc译正如大家看到的那样,默认的序列化机制并不难操纵。然而,假若有特殊要求又该怎么办呢?我们可能有特殊的安全问题,不希望对象的某一部分序列化;或者某一个子对象完全不必序列化,因为对象恢复以后,那一部分需要重新创建。此时,通过实现Externalizable接口,用它代替Serializable接口,便可控制序列化的具体过程。这个Externalizable接口扩展了Serializ...
利用“持久性”

利用“持久性”

利用“持久性”2007-05-29 yycnet.yeah.net yyc译一个比较诱人的想法是用序列化技术保存程序的一些状态信息,从而将程序方便地恢复到以前的状态。但在具体实现以前,有些问题是必须解决的。如果两个对象都有指向第三个对象的句柄,该如何对这两个对象序列化呢?如果从两个对象序列化后的状态恢复它们,第三个对象的句柄只会出现在一个对象身上吗?如果将这两个对象序列化成独立的文件,然后在代码的不同部分重新装配它们,又会得到什么结果呢?下面这个例子对上述...
Java IO学习总结

Java IO学习总结

Java IO学习总结2007-05-29 yycnet.yeah.net yyc译Java IO流库能满足我们的许多基本要求:可以通过控制台、文件、内存块甚至因特网(参见第15章)进行读写。可以创建新的输入和输出对象类型(通过从InputStream和OutputStream继承)。向一个本来预期为收到字串的方法传递一个对象时,由于Java已限制了“自动类型转换”,所以会自动调用toString()方法。而我们可以重新定义这个to...
java IO练习题

java IO练习题

java IO练习题2007-05-29 yycnet.yeah.net yyc译(1) 打开一个文本文件,每次读取一行内容。将每行作为一个String读入,并将那个String对象置入一个Vector里。按相反的顺序打印出Vector中的所有行。(2) 修改练习1,使读取那个文件的名字作为一个命令行参数提供。(3) 修改练习2,又打开一个文本文件,以便将文字写入其中。将Vector中的行随同行号一起写入文件。(4) 修改练习2,强迫Vector中的所有行...
java对RTTI的需要

java对RTTI的需要

java对RTTI的需要2007-05-29 yycnet.yeah.net yyc译请考虑下面这个熟悉的类结构例子,它利用了多形性。常规类型是Shape类,而特别衍生出来的类型是Circle,Square和Triangle。这是一个典型的类结构示意图,基础类位于顶部,衍生类向下延展。面向对象编程的基本目标是用大量代码控制基础类型(这里是Shape)的句柄,所以假如决定添加一个新类(比如Rhomboid,从Shape衍生),从而对程序进行扩展,那么不会影响...
java的rtti机制语法

java的rtti机制语法

java的rtti机制语法2007-05-29 yycnet.yeah.net yyc译Java用Class对象实现自己的RTTI功能——即便我们要做的只是象造型那样的一些工作。Class类也提供了其他大量方式,以方便我们使用RTTI。首先必须获得指向适当Class对象的的一个句柄。就象前例演示的那样,一个办法是用一个字串以及Class.forName()方法。这是非常方便的,因为不需要那种类型的一个对象来获取Class句柄。然而,...
反射:运行期类信息

反射:运行期类信息

反射:运行期类信息2007-05-29 yycnet.yeah.net yyc译如果不知道一个对象的准确类型,RTTI会帮助我们调查。但却有一个限制:类型必须是在编译期间已知的,否则就不能用RTTI调查它,进而无法展开下一步的工作。换言之,编译器必须明确知道RTTI要处理的所有类。从表面看,这似乎并不是一个很大的限制,但假若得到的是一个不在自己程序空间内的对象的句柄,这时又会怎样呢?事实上,对象的类即使在编译期间也不可由我们的程序使用。例如,假设我们从磁盘...
一个java类方法提取器

一个java类方法提取器

一个java类方法提取器2007-05-29 yycnet.yeah.net yyc译很少需要直接使用反射工具;之所以在语言中提供它们,仅仅是为了支持其他Java特性,比如对象序列化(第10章介绍)、Java Beans以及RMI(本章后面介绍)。但是,我们许多时候仍然需要动态提取与一个类有关的资料。其中特别有用的工具便是一个类方法提取器。正如前面指出的那样,若检视类定义源码或者联机文档,只能看到在那个类定义中被定义或覆盖的方法,基础类那里还有大量资料拿不...
java rtti学习总结

java rtti学习总结

java rtti学习总结2007-05-29 yycnet.yeah.net yyc译利用RTTI可根据一个匿名的基础类句柄调查出类型信息。但正是由于这个原因,新手们极易误用它,因为有些时候多形性方法便足够了。对那些以前习惯程序化编程的人来说,极易将他们的程序组织成一系列switch语句。他们可能用RTTI做到这一点,从而在代码开发和维护中损失多形性技术的重要价值。Java的要求是让我们尽可能地采用多形性,只有在极特别的情况下才使用RTTI。但为了利用多...
传递和返回对象

传递和返回对象

传递和返回对象2007-05-29 yycnet.yeah.net yyc译到目前为止,读者应对对象的“传递”有了一个较为深刻的认识,记住实际传递的只是一个句柄。在许多程序设计语言中,我们可用语言的“普通”方式到处传递对象,而且大多数时候都不会遇到问题。但有些时候却不得不采取一些非常做法,使得情况突然变得稍微复杂起来(在C++中则是变得非常复杂)。Java亦不例外,我们十分有必要准确认识在对象传递和赋值时所发...
<< 11 12 13 14 15 16 17 18 19 20 >>