分类
- 按照流的方向:
输入流
(inputStream)和输出流(outputStream)
; - 按照实现功能分:
节点流
(可以从或向一个特定的地方读写数据,如 FileReader)和处理流
(是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写, BufferedReader); - 按照处理数据的单位:
字节流
和字符流
。分别由四个抽象类来表示(每种流包括输入和输出两种所以一共四个):InputStream,OutputStream,Reader,Writer。Java中其他多种多样变化的流均是由它们派生出来的。
字节流如何转为字符流?
- 字节输入流 转 字符输入流 通过 InputStreamReader 实现,该类的构造函数可以传入 InputStream 对象。
- 字节输出流 转 字符输出流 通过 OutputStreamWriter 实现,该类的构造函数可以传入 OutputStream 对象。
字符流与字节流的区别?
- 读写的时候,字节流是按字节读写,字符流按字符读写。
- 字节流适合所有类型文件的数据传输,因为计算机字节(Byte)是电脑中表示信息含义的最小单位。字符流只能够处理
纯文本数据
,其他类型数据不行,但是字符流处理文本要比字节流处理文本要方便。 - 在读写文件需要对内容按行处理,比如比较特定字符,处理某一行数据的时候一般会选择
字符流
。 - 只是读写文件,和文件内容无关时,一般选择
字节流
。