IO流的分类
- 按照流的方向:分为输入流和输出流
- 按照处理数据的类型:分为字节流和字符流
输入&输出流
流的输入输出都是针对于内存来说的,参考系是内存。
输入流:由硬盘数据到读到内存的流叫做输入流
输出流:由内存写到硬盘的数据叫做输出流
字节流&字符流
流一下子处理的数据单元,是一个字节还是一个字符,1字符=8字节
字节流:每次处理一个字节的数据(byte)
字符流:每次处理一个字符的数据(比如:字母是一个字符,中文是两个字符)
IO四大类
IO流主要分为如下几类,这几类都是抽象类,我们平时一般都使用的是它们的子类
java.io.InputStream //字节输入流
java.io.OutputStream //字节输出流
java.io.Reader //字符输入流
java.io.Writer //字符输出流
常用的子类为:
文件专属:
java.io.FileInputStream //(文件字节输入流)最常用的流
java.io.FileOutputStream//(文件字节输出流)最常用的流
java.io.FileReader //(文件字符输入流)只能处理文本文件
java.io.FileWriter//(文件字符输出流)只能处理文本文件
转换流:(将字节流转换成字符流)
java.io.InputStreamReader
java.io.OutputStreamWriter
缓冲流专属:
java.io.BufferedReader
java.io.BufferedWriter
java.io.BufferedInputStream
java.io.BufferedOutputStream
数据流专属:
java.io.DataInputStream
java.io.DataOutputStream
标准输出流:
java.io.PrintWriter
java.io.PrintStream //这个可以用来改变系统打印输出方向,通过System.setOut(文件)来改变系统输出位置
对象专属流:
java.io.ObjectInputStream(反序列化使用)
java.io.ObjectOutputStream(序列化时使用)//Ps:序列化是将内存中的对象存到硬盘里的操作