1. IO流(Input Output):用来处理设备之间的数据传送。
a) 按照流操作数据分为两种:字节流(操作图片,音乐等文件)和字符流(操作文字数据)
l 字节流抽象基类
1. InputStream和OutputStream
l 字符流的抽象基类
1. Reader和Write
b) 流按流向分为:输入流和输出流
2. 字符流缓冲区:提高了对数据的读写效率,在流的基础上进行增强。
a) 字符流:FileWriter ,FileReader。
b) BufferedReader 温馨提示:关闭缓冲流就不用关闭写入流了
l 缓冲区提供了一个跨平台的换行符:NewLine();
c) BufferedWriter
l ReadLine() 读取一行数据
3. 装饰设计模式:
a) 当想要对已有的对象进行功能增强时,可以定义类,将已有的对象传入,基于已有的功能,并提供加强功能,那么自定义的该类为装饰类。
b) 装饰设计模式与继承的区别
l 装饰模式比继承要灵活,避免了集成体系的臃肿
l 而且降低了类与类之间的关系。
l 装饰类因为增强已有对象,具备的功能和已有的是相同的,只不过提供了更强的功能,所以装饰类和被装饰类都是属于一个体系中。
4. 字节流。(FileInputStream 读取流 , FileOutputStream写入流)
a) 字节流缓冲区
l BufferedInputStream , BufferedOutputStream
b) FileInputStream 读取流
l available(), 定义一个刚刚好的缓冲区,不用再循环操作了。此方法慎用,当数据太大的时候建议使用循环读取,否则容易内存溢出。
5. 键盘录入:
l System.out对应的是标准的输出设备,控制台
l System.in 标准的输入设备,键盘
6. 读取转换流
a) InputStreamReader ,将字节流转换成字符流
7. 写入转换流
a) OutputStreamWriter ,将字符流转成字节流
8. 1,明确源和目的。
源:输入流。InputStream Reader
目的:输出流。OutputStream Writer。
2,操作的数据是否是纯文本。
是:字符流。
不是:字节流。
3,当体系明确后,在明确要使用哪个具体的对象。
通过设备来进行区分:
源设备:内存,硬盘。键盘
目的设备:内存,硬盘,控制台。
------------例如----------------------------------
1,将一个文本文件中数据存储到另一个文件中。复制文件。
源:因为是源,所以使用读取流。InputStream Reader
是不是操作文本文件。
是!这时就可以选择Reader,如果不是,就选择InputStream
这样体系就明确了。
接下来明确要使用该体系中的哪个对象。
明确设备:硬盘。上一个文件。
Reader体系中可以操作文件的对象是 FileReader
是否需要提高效率:是!。加入Reader体系中缓冲区 BufferedReader.
FileReader fr =new FileReader("a.txt");
BufferedReaderbufr = new BufferedReader(fr);
目的:OutputStream Writer
是否是纯文本。
是!Writer。
设备:硬盘,一个文件。
Writer体系中可以操作文件的对象FileWriter。
是否需要提高效率:是!。加入Writer体系中缓冲区 BufferedWriter
FileWriter fw =new FileWriter("b.txt");
BufferedWriter bufw = newBufferedWriter(fw);