一、IO流常用基类
字节流的抽象基类:InputStream,OutputStream
字符流的抽象基类:Reader,Writer。
二、字符流
1、缓冲区:提高了对数据的读写效率。缓冲区要结合流使用。
对应类:BufferedWriter BufferedReader
readLine方法的原理:无论是读一行,还是读取多个字符,最终都是在硬盘上一个个的读取。所有最终使用的还是read方法,一次读一个。
2、装饰设计模式:当想要对已有的对象进行功能增强时,可以定义类,将已有的对象传入,基于已有的功能,并提供加强功能。那么自定义的该类称为装饰类。装饰类通常会通过构造方法接收被装饰的对象。并基于被装饰对象的功能,提供更强的功能。
三、字节流
1、缓冲区:BufferedInputStream BufferedOutputStream
2、readLine方法是字符流BufferedReader类中的方法。而read方法是字节流InputStream的方法。
3、录入键盘数据的最常见写法:BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
输出数据的最常见写法:BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out));
将键盘录入的数据存储到一个文件中:BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("out.txt")));
将文件中的数据输出到控制台上:BufferedReader bufr = new BufferedReader(new InputStreamReader(new FileInputStream(in.txt)));
BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out));
四、选择流对象
1、明确源和目的
源:输入流。InputStream Reader
目的:输出流。OutputStream Writer
2、操作的数据是否是纯文本,是:字符流;不是:字节流。