I/O流主要分为二大类别:字符流和字节流。
字节流(基本流)1、字节输入流 类名:FileInputStream 特点:读(对文件进行读取操作) 父类:InputStream
2、字节输出流 类名:FileOutputStream 特点:写 (对文件进行写入操作) 父类:OutputStream
字符流(基本流)1、字符输入流 类名:FileReader 特点:读(对文件进行读取操作) 父类:InputStreamReader
2、字符输出流 类名:FileWriter 特点:写 (对文件进行写入操作) 父类:OutputStreamWriter
缓冲流 字节缓冲流1、缓冲字节输入流 类名:BufferedInputStream 特点:读(对文件进行读取操作) 父类:FilterInputStream
2、缓冲字节输出流 类名:BufferedOutputStream 特点:写 (对文件进行写入操作) 父类:FilterOutputStream
字符缓冲流1、缓冲字符输入流 类名:BufferedReader 特点:读(对文件进行读取操作) 父类:Reader (基本输入流多了()一次读取一行方法)
2、缓冲字符输出流 类名:BufferedWriter 特点:写 (对文件进行写入操作) 父类:Writer (比基本输出流多了() 换行方法)
转换流1、InputStreamReader 特点:读 (对文件进行读取操作) 输入流 父类:Reader
2、OutputStreamWriter 特点:写 (对文件进行写入操作) 输出流 父类:Writer
打印流1、PrintStream 特点:写 (对文件进行写入操作) 底层:基本字节流
2、PrintWriter 特点:写 (对文件进行写入操作) 底层:基本字符流
基本字节流和基本字符流的区别:1、字节流可以读写任何文件 字符流只能读取普通文件
2、读写文本文件尽量使用字符流 这要比字节流效率高
3、读写媒体文件用字节流
4、基本字节流没有缓冲区
5、基本字符流有缓冲区 默认大小为8k (不能指定缓冲区大小)
6、字节流是一个一个字节读 效率比较低 虽然可以读取各种各样的文件但是 最适用于读取媒体文件
7、字符流是一个一个字符读 效率比较高
缓冲流和基本流的区别:1、缓冲流效率要高于基本流
2、缓冲字符流弥补了基本字符流不能设置缓冲区大小的缺口
3、缓冲字节流和基本字节流相比 建议使用基本字节流
4、缓冲字符流和基本字符流相比 建议使用缓冲字符流
转换流的作用转换流的作用主要是解决在进行读写操作时出现的中文乱码 (java默认处理文件时是gbk 当将文本文件保存为utf-8的时候 进行读写操作就会出现中文乱码)
// 用转换流读写 OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("a.txt"), "utf-8"); osw.write("中国"); osw.close(); InputStreamReader isr = new InputStreamReader(new FileInputStream("a.txt"),"utf-8"); char[] cc = new char[10]; isr.read(cc); String ss = new String(cc); System.out.println(ss); isr.close();