posts - 5,comments - 0,trackbacks - 0

一个程序经常需要从外部获取信息,或者向外部发送信息2005年10月26日。信息可以在任何地方:在一个文件中,在磁盘上,在网络上的某个地方,内存中,或者在另外一个程序中。  同时,信息可以是任何类型:对象,字符,图形,或者声音, 这一节包括了Java™ 平台中可以用来读写的类。

overview of  i/o Streams
  
要得到信息,程序在源数据上打开一个流(文件,内存,socket),然后顺序读入数据,如下图所示:

 
19stream.gif

同样,程序可以通过打开一个文件流向目标发送信息:
20stream2.gif

无论数据来自哪里或者向哪发送,无论是何种类型,读写数据的规则是一样的:
    Reading  Writing
open a stream
while more information
read information
close the stream





 open a stream
 while more information
 write information
 close the stream

java.io.*包 文件流类的集合,支持这些读写的规则,。 使用这些类,程序需要import java.io.*。文件流类可以分为两个类层次,以所处理的数据类型(字符或字节)为基础。
21chstream.gif

字符流
Reader和Writer是java.io.包里面字符流的两个抽象类。 Reader类提供了readers--stream 读取16-bit字符的API和部分实现,,Writer提供了writers--streams 写入16-bit字符的api和部分实现。Reader和Writer的子类分为两类:从data sink中读写的类(黑色),和数据处理类(白色)
23reader.gif
24writer.gif
大部分应用程序应该用reader和writer来读写文本信息。原因是他们可以处理Unicode中字符集
总的任何字符,而字节流只能处理 iso-Latin-1 8-bit字节。 

字节流
    为了读写8-bit字节,程序应该使用字节流,InputStream和OutputStream的子类,InputStream和OutputStream提供了input streams(streams that read 8-bit bytes),output streams(streams that write 8-bit bytes)的api和部分实现,这些流典型的用来读写二进制数据,像图像,声音。 其中字节流的两个类,ObjectInputStream,ObjectOutputStream用于对象的序列化,These classes are covered in
Object Serialization
    就像Reader和Writer类,,InputStream和OutputStream的子类也分为两类,数据接收流(阴影)和数据处理流
25inputs.gif
26outputs.gif
理解  i/o 超类
Reader和InputStream定义了相似的APIs,,只是针对的data type不同。例如,Reader 包含了以下读取字符和字符数组的方法:
      int read()
      int read(char cbuf[])
      int read(char cbuf[], int offset,int length)
InputStream 定义了相同的方法,用来读取字节和字节数组
      int read()
      int read(char cbuf[])
      int read(char cbuf[], int offset,int length)
同样的,Reader和InputStream提供一些相似的方法,例如在流中作标记,skipping input,重置当前position。

Writer和OutputStream也是相似的:

int write(int c)
int write(char cbuf[])
int write(char cbuf[], int offset, int length)

And OutputStream defines the same methods but for bytes:

int write(int c)
int write(byte cbuf[])
int write(byte cbuf[], int offset, int length)
















所有这些流,readers, writers, input streams, and output streams---在创建的时候自动打开,可以调用他们的
关闭方法关闭他们,或者党对象不再使用时由垃圾回收机制回收。

posted on 2005-10-26 15:27 blackdead - Life is sad 阅读(213) 评论(0)  编辑  收藏 所属分类: java技术

只有注册用户登录后才能发表评论。


网站导航: