一、IO流的三种分类方式:
1.按照流向划分:
输入流:只能从中读取字节数据,不能向其写出入数据
输出流:只能向其写入字节数据,不能从中读取数据
2.按照流所处理的数据类型划分:
字节流:用于处理字节数据。
字符流:用于处理Unicode字符数据。
3.按照格式划分:
节点流(低级流)可以从向一个特定的IO设备(如磁盘,网络)读写数据的流。
处理流(高级流):可以对一个已存在的流的连接和封装,通过所封装的流的功能实现数据读写功能的流。
二、IO流的四大抽象类:
1.常见InputStream类
-低级
InputStream(字节流)
FileInputStream(文件流)
ByteArrayInputStream(数组流)
PipedInputStream(是向与其它线程共用的管道中写入数据)
-高级
DataInputStream(数据流)
BufferedInputStream(缓冲流)
2.常见OutputStream
-低级
OutputStream
FileOutputStream
ByteArrayOutputStream
PipedOutputStream
-高级
DataOutputStream
BufferedOutputStream
3.常见的Reader类
-低级
CharArrayReader
StringReader
PipedReader
FileReader(文件字符流)
-高级
BufferedReader
InputStreamReader
LineNumberReader
4.常见的Writer相关类
-低级
CharArrayWriter
StringWriter
PipedWriter
FileWriter
-高级
BufferedWriter
OutputStreamWriter
PrintWriter
注意:
所有高级流都不能直接IO设备(磁盘或网络等)进行直接的交互,必须建立在低级流的基础之上。
三、缓冲流:(提高效率)
BufferedReader -Reader
BufferedWriter
BufferedInputStream -InputStream
BufferedOutputStream
缓冲流输入流 支持其父类的mark()和reset()方法。
mark()方法用于“标记”当前位置,就像加入了一个书签,可以使reset()方法返回这个标记重新读取数据。
BufferedReader -readLine() --以r或n分隔
BufferedWriter -newLine() --写入一个行分隔符
BufferInputStream和BufferedOutputStream平时很少用到。