java io流类图

来源:互联网 发布:算法与复杂性理论 编辑:程序博客网 时间:2024/05/19 07:07

基于字节的I/O操作(InputStreamOutputStream)



二者类似,我只详细讲解InputStream类,OutputStream留给大家自己去学习。InputStream类是个抽象类,里面核心的方法就是read()、read(byte b[])、read(byte b[], int off, int len),这三个方法是用于读取数据的底层的方法,他们可以用来读取一下这些类型的数据:

A. 字节数组

B. String对象

C. 文件

D. 管道,从一端进入,从另一端输出

E. 流

F. internet资源

每一种数据源都有相应的InputStream子类,因为InputStream是个处于顶层的类,用来处理各种数据源的类都继承了InputStream类,我们来看看这些类:

ByteArrayInputStream:处理字节数组的类,允许将内存的缓冲区当做InputStream使用。

StringBufferInputStream:将String转换成InputStream,内部实现用的是StringBuffer

FileInputStream:从文件中读取数据。

PipedInputStream:用于从管道中读取数据。

SequenceInputStream:将多个流对象转化成一个InputStream

FilterInputStream:装饰器类,为其它InputStream类提供功能。

做过关于IO操作的读者知道,我们很少单独使用哪个类来实现IO操作,平时都是几个类合起来使用,这其实体现了一种装饰器模式的思想,在后面的分析中我们会详细的分析。从上面的图1中我们可以看出,FilterInputStream虽说是Inputstream的子类,但它依然是BufferedInputStreamDataInputStreamLineNumberInputStreamPushbackInputStream类的父类,这四个类分别提供了最贴近我们程序员使用的方法,如:readInt() 、readInt()、readInt()等等。对于IO操作,不管是磁盘还是网络,最终都是对字节的操作,而我们平时写的程序都是字符形式的,所以在传输的过程中需要进行转换。在字符到字节的转换过程中,我们需要用到一个类:InputStreamReader


基于字符的I/O操作(WriterReader)



WriterReader操作的目的就是操作字符和不是字节,和InputStreamOutputStream配合增加IO效果。通过InputStreamReaderOutputStreamReader可以进行字节和字符的转换,设计WriterReader的目的是国际化,使IO操作支持16位的Unicode

0 0
原创粉丝点击