一、什么是流
流是一种抽象的概念,可以理解为一条虚拟的管道,里面进行数据的传输,再Java中,一切皆可为对象,流当然也被抽象为类。
二、流的分类
按照传输数据类型的分类:可分为字节流和字符流。其中字符流,如果当遇到英文时,字符流足够聪明,一次就读一个字节,如遇到中文,一次读两个字节。比如a就占一个字节,即97。但Java采用UTF-16的code unit,一个字符两个字节。
按照输入输出类型分为:输入流和输出流。
按照功能分类分为:节点流、处理流
节点流:以从或向一个特定的地方(节点)读写数据。如FileInputStream 处理流:是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写。如BufferedReader。处理流的构造方法总是要带一个其他的流对象做参数。一个流对象经过其他流的多次包装。
三、Java流的基本使用
看四张网上截下来的图 :
这四张图,展示了Java I/O的结构。基本所有的I/O操作都继承自四个基类。
四、InputStreamReader和OutputStreamWriter
转换流的作用,文本文件在硬盘中以字节流的形式存储时,通过InputStreamReader读取后转化为字符流给程序处理,程序处理的字符流通过OutputStreamWriter转换为字节流保存。