InputStream和OutputStream读写以单字节为基础的字节数据流; 
Reader和Writer读写以双字节的Unicode字符为基础的字节数据流; 
2、二进制数据的读写
DataInputStream和DataOutputStream 
可以完成对所有基本Java类型的读写; 
FileInputStream和FileOutputStream 
对一个磁盘文件涉及的数据流进行输入输出处理,是字节级的读写操作; 
3、Java的流类型中按职责分有两类: 
(1)从文件或者一些特殊地方读入字节数据(如FileInputStream); 
(2)把这些字节数据“组装”成更有用的数据类型(如DataInputStream、PrintWriter) 
要完成具体操作时,需要对流进行组装处理 
4、Java的流不具备预读和缓冲功能,需要额外处理 
       BufferInputStram对流进行缓冲处理; 
       PushbackInputStream对流进行预读处理; 
5、RandomAccessFile随机存取文件,这个类同时实现了DataInput和DataOutput; 
6、文本流,即通过主机环境的工具,人眼能够辨别的文件内容 
由于windows的字串写入是ASCII格式的,将Unicode编码写进一个文本文件,用主机环境的工具,人眼无法辨别文件内容,Java提供一套流过滤器弥补Unicode编码和本机操作系统采用字符编码的裂缝。 
7、InputStreamReader 特殊的编码方案输入字节流转换为Unicode字符;这个类采用主机默认编码,在windows中使用ISO 8859-1编码,即“ASNI”编码; 
OutputStreamWriter 把Unicode字符流转换为特殊的编码方案字节流 
8、FileReader和FileWriter 
对磁盘文件进行读写,已经弥补了Unicode编码和本机编码的裂缝,可以直接使用 
9、写文本输出: 
       二进制写入数据:DataOutputStream; 
       文本格式写入数据:PrintWriter; 
  读文本输入: 
       二进制读入数据:DataInputStream; 
       文本格式读入数据:BufferReader; 
10、其他一些流 
如:ZipInputStream和ZipOutputStream