I/O流分类
按数据流向分为:输入流、输出流
按处理数据单位分为:字节流、字符流
按功能分为:节点流、 处理流
四种基本抽象流类型
字符流和字节流
字符流和字节流的主要区别:
1.字节流读取的时候,读到一个字节就返回一个字节; 字符流使用了字节流读到一个或多个字节(中文对应的字节数是两个,在UTF-8码表中是3个字节)时。先去查指定的编码表,将查到的字符返回。
2.字节流可以处理所有类型数据,如:图片,MP3,AVI视频文件,而字符流只能处理字符数据。只要是处理纯文本数据,就要优先考虑使用字符流,中文一定要用字符流,除此之外都用字节流。
节点流和处理流
处理流
缓冲流
BufferedInputStream
BufferedOutputStream
BufferedReader 提供了readline方法,一次读取一行
BufferedWriter
转换流
用于字节数据到字符数据的转换,该流对象中可以对读取到的字节数据进行指定编码的编码转换。
InputStreamReader
OutputStreamWriter
数据流
该数据流可以方便地对一些基本类型数据进行直接的存储和读取,不需要再进一步进行转换,通常只要操作基本数据类型的数据,就需要通过DataStream进行包装。
DataInputStream
DataOutputStream
打印流
PrintStream
PrintWriter
对象流
该类型的流可以把类作为一个整体进行存取,被写入的对象必须实现一个接口:Serializable
ObjectInputStream
ObjectOutputStream