IO流的分类
按按数据流的方向分为 输入流、输出流
输入流:从别的地方获取字节或者字符来输入到我们的程序当中。
输出流:从我们的程序中输出到别的地方。
按处理数据单位不同分为 字节流、字符流
字节流:每次读取(写出)一个字节,当传输的资源文件有中文时,就会出现乱码。
字符流:每次读取(写出)两个字节,有中文时,使用该流就可以正确传输显示中文。
IO流分为四个抽象父类
InputStream,OutputStream (字节流)
Reader,Writer (字符流)
InputStream子类:
- FileInputStream:
读取文件的方法:
read():读取的是一个字节
read(byte[] buf):读取数据到字节数组中
- DataInputStream:处理基本数据类型
- ObjectInputStream:处理自定义对象
- BufferedInputStream
- System.in
OutputStream子类:
- FileOutputStream:
写入文件的方法:
write():读取的是一个字节
write(byte[] buf):读取数据到字节数组中
- DataOutputStream:处理基本数据类型
- ObjectOutputStream:处理自定义对象
- BufferedOutputStream
- PrintStream (System.out是PrintStream的子类,不是OutputStream子类)
Reader子类:
- InputStreamReader (FileReader是InputStreamReader的子类)
- BufferedReader:
BufferedReader直接继承于Reader但是在使用的时候通常要添加InputStreamReader作为构造方法的参数
(在处理字节流的时候效率比较低,要把字节流准换位字符流)
Writer子类:
- OutputStreamWriter (FileWriter是OutputStreamWriter的子类)
- BufferedWriter:
- PrintWrite: