1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
java_2

example “序列化对象”这个功能除了可以应用于文件的写入和读取,还可以用于其它很多领域。比如:将对象直接通过网络进行传送,或是传送影像数据…… 演 示 SequenceInputStream 如果想将一个文件分割成多个文件后,再将之组合还原为一个文件,最低级的做法是:用多个FileInputStream对象打开这些分割后的文件,然后一个一个文件地读取,并使用同一个FileOutputStream对象写入同一个文件中。在这个过程中,必须自行判断每一个分割的文件是否读取完毕,如果读完就继续读取下一个文件。 使用java.io.SequenceInputStream可以免去这种麻烦,SequenceInputStream对象本身就可以看作是数个InputStream对象的组合。可以用它统一读取多个文件的内容:在其内部,会自动一个接一个地读取InputStream对象的内容,直到所有的InputStream对象都读取完毕为止。 Enumeration SequenceInputStream只有两种构造函数的重载形式 (JDK6):一种只能从两个InputStream对象中读取数据;而另一种则能从任意多个InputStream对象中读取数据——不过,它需要一个实现了Enumeration接口的对象作参数。 事实上,Enumeration接口已经不推荐使用了(基本被Iterator接口取代),不过在这里也只能用它。要实现Enumeration接口,就要实现它声明的两个方法:hasMoreElements、nextElement,这两个方法类似于Iterator接口中的hasNext、next方法,实际上也的确可以先利用集合对象(比如ArrayList,在其中存储InputStream对象)的iterator方法制造一个Iterator对象,再通过Iterator对象中的hasNext和next方法实现Enumeration接口中的两个方法 Enumeration BufferedInputStream 在实际使用SequenceInputStream对象的时候,除了要找一个Enumeration对象作参数(以便可以接受任意多个InputStream对象中的数据)之外,往往还需要给它加上一个BufferedInputStream对象,以便进行缓冲输入。 example PrintStream 前面介绍的OutputStream对象,都是将内存中的数据原封不动地写入目标设备(比如文件)中——并没有经过编码处理。比如:用FileOutputStream对象将int型数据1写入文件,则文件中存储的就是int型的整数1在内存中的值(在打开文件查看显示效果的时候,可能会发现这是一个奇怪的符号——不过肯定不是按“操作系统默认编码”得到的字符1) example 如果我们想要存储的结果,是数据经过编码处理转换为字符之后的结果(比如程序执行的结果是实数3.14159,而我们希望存储的是“3.14159”这样一个字符序列——即,将数据存储为“纯文本文件”)——以便通过“纯文本”编辑器就可以直接观看,那就意味着:当我们想存储整数1的纯文本形式时,就必须先进行编码转换,再存储。 而如果使用java.io.PrintStream,则可以自动完成编码转换的工作(默认使用“操作系统编码”来处理相应的字符转换动作,也可以自行设定) PrintStream 纯文本文件 注意:实际上,文件在存储时并没有“二进制文件”与“纯文本文件”之分——所有文件存储的都是二进制的数据。所谓“纯文本文件”,其实是指,文件中存储的数据是经过编码、转换成了字符的(也就是说解释数据用的是一套字符编码,而其它“二进制文件”解释数据的时候,用的是图像编码、音频编码、视频编码……这些其它的编码格式),仅此而已 ByteArrayInputStream和ByteArrayOutputStream 流的“源设备”和“目的设备”并不一定是文件,也可以是内存中的一块空间(比如,一个字节数组)。java.io.ByteArrayInputStream和java.io.ByteArrayOutputStream就是可以将“字节数组”当作“源设备”和“目的设备”来操作的类。它们都自带一个“字节数组”作为缓冲区。关闭ByteArrayInputStream或ByteArrayOutputStream的流对象是无效的 Reader和Writer Java程序语言使用Unicode来表示字符串和字符。 Reader和Writer这两个抽象类主要用来读写字符流。 java.io包中Reader的类层次 Reader BufferedReader CharArrayReader FilterReade

文档评论(0)

cbf96793 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档