IO流的分类
按数据流的方向:输入流、输出流。
一般来说,输入输出都是相对与程序而言的,程序要读取硬盘里的信息时,就是输入,同理,程序往硬盘里写信息时就是输出。
按处理数据单位:字节流、字符流。
字节流和字符流的用法几乎一模一样,他们的区别在于字节流和字符流所操作的数据单元不同,字节流操作的是8位的字节,字符流操作的是16位的字符。
一般来说:
字节流是处理图片、音频、视频等文件的。
字符流用于处理纯文本类型的文件。 -- 不能处理图像视频等非文本类文件。
字节流可以处理一切文件,字符流只能处理纯文本文件。
按功能:节点流、处理流。
节点流是指直接操作数据读写的流类。
处理流是对一个已存在的流的链接和封装,通过数据进行处理为程序提供功方便的能力。
Reader -- 字符读取
节点流:
FileReader
PipedReader
CharArrayReader
处理流:
BufferedReader
InputStreamReader
Writer -- 字符写出
节点流:
FileWriter
PipedWriter
CharArrayWriter
处理流:
BufferedWriter
OutputStreamWriter
printWriter
InputStream -- 字节读取
节点流:
FileInputStream -- 字节流的方式效率较低,不建议使用。
PipedInputStream
ByteArrayInputStream
处理流:
BufferedInputStream -- 缓冲字节流是为高效率而设计的,真正的读写操作还是靠字节流。
DataInputStream
ObjectInputStream
SequenceInputStream
OutputStream -- 字节写出
字节流:
FileOutputStream -- 字节流的方式效率较低,不建议使用。
PipedOutputStream
ByteArrayOutputStream
处理流:
BufferedOutputStream -- 缓冲字节流是为高效率而设计的,真正的读写操作还是靠字节流。
DataOutputStream
ObjectOutputStream
PrintStream
InputStreamReader、OutputStreamWriter(字符流)
字符流适用于文本文件的读写。借助FileOutputStream实现的。