http://blog.csdn.net/lbluedark/archive/2006/05/23/751096.aspx
流是一个很形象的概念,当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或是网络连接。类似的,当程序需要写入数据的时候,就会开启一个通向目的地的流。这时候你就可以想象数据好像在这其中“流”动一样,如下图:
java.io 包是一组流类,分为:
字节流:抽象父类是 InputStreamOutputStream
字符流:抽象父类是 Reader 和 Writer
1、 InputStream
InputStream 类的体系结构
FileInputStream 类:从实际磁盘文件读取数据
ByteArrayInputStream 类:在字节数组中执行读写操作
StringBufferInputStream 类:类似于 ByteArrayInputStream ,将字符串用作内部缓冲器
2 、 OutputStream
定义用于写入字节或字节数组的方法。
OutputStream 类的体系结构
FileOutputStream 类:创建文件(如果文件不存在),并将数据写入文件
ByteArrayOutputStream 类:在内存中创建缓冲器, toByteArray( ) 和 toString( ) 方法用于数据检索
FilterOutputStream 类:高层输出流
File 类:提供定位本地文件系统、描述文件和目录的功能,是 java.io 包中引用实际磁盘文件的唯一对象。
流类可以分为:
底层流:包含以字节的形式读写的方法
高层过滤器流:用于读写高层信息
高层流要求底层流作为基础。
FilterInputStream 类的子类包括:
DataInputStream 类:提供读取任意对象的能力
DataOutputStream 类:提供写入任意对象的能力
BufferedInputStream 类:允许程序一次一个字节地从流读取数据
BufferedOutputStream 类:允许程序一次一个字节地向流写入数据
PrintStream 类:用于写入文本或基本类型
3 、 Reader
读取字符类型。
Reader 类的体系结构
FileReader :使读取字符文件成为可能
StringReader :读取字符串的字符
CharArrayReader :允许将字符数组用作输入
InputStreamReader :从输入流读取字节,并将它们转换成字符
FilterReader :允许读取过滤字符流
BufferedReader :接受 Reader 对象为参数,并对其添加字符缓冲器
4 、 Writer
写入字符类型。
Writer 类的体系结构
FileWriter :允许将字符类型数据写入文件
CharArrayWriter :允许将字符缓冲器用作输出流
PrintWriter :包含一些使生成格式化输出变得很简单的方法
FilterWriter :用于写入过滤字符流
BufferedWriter :将数据缓冲到字符输出流
BufferedReader :是 Reader 类的子类,为 Reader 对象添加字符缓冲器,为数据输入分配内存存储空间,存取数据更为有效。