InputStream的作用是用来表示那些从不同数据源产生输入的类:包括
- 字节数组 ByteArray
- String对象 StringBuffer
- 文件 File
- 管道 Piped
- 一种由其他种类的流组成的序列 SequenceInputStream (两个或多个InputStream对象转换成单一InputStream)
OutputStream决定了输出所要去的目标
- 字节数组 ByteArray
- 文件 File
- 通道 Piped
装饰器类为FilterInputStream/FilterOutputStream
FilterInputStream类型有2个功能:a.DataInputStream可以读取不同的基本类型数据以及String对象 b.其他FilterInputStream则在内部修改InputStream的行为方式:1是否缓冲2是否保留它所读过的夯3是否把单一字符推回输入流等
- DataInputStream
- BufferedInputStream
- LineNumberInputStream
- PushbackInputStream
无缓冲输入为特殊情况,一般都缓冲
FilterOutputStream类型
- DataInputStream
- PrintStream
- BufferedOutputStream
InputStreamReader/OutputStreamWriter 适配器模式
Reader和Writer面向字符,兼容Unicode,目的为了提供国际化功能
PrintStream可视化打印所有的基本数据类型以及String对象
DataOutputStream的目的是将数据元素置入“流”中,是DataInputStream能够可移植地重构它们
使用readLine()时应该使用BufferedReader,除此种情况之外,DataInputStream认识IO类库的首选成员
自我独立的类
RandomAccessFile适用于由大小一致的记录组成的文件,可以使用seek()将记录从一处转移到另一处,然后读取或者修改,getFilePointer()查找当前所处的文件位置,搜寻方法只适用于文件。不是InputStream或OutputStream继承层次结构,实现了DataInput和DataOutput接口(DataInputStream和DataOutputStream也实现了这两个接口),它和这两个继承层次结构没有任何关联。
标准io
System.in(未被包装,在读取System.in之前必须对其进行包装)、System.out、System.err(后两者被包装成了PrintStream)
总结
io中用到了装饰器模式和适配器模式