IO(input output)
流按操作数据分为两种:字节流与字符流
字符流:字节流读取文字字节数据后,不直接操作而是先查指定的编码表。获取对应的文字,
在对这个文字进行操作。简单说:字节流+编码表
流按流向分为:输入流,输出流
将外设中的数据读取到内存中---输入
将内存的数写入到外设中---输出
字节流的抽象基类(两个顶层父类):
缓冲区:byte
基本操作与字符流相同,不仅可以操作字符,还可以操作其他媒体文件
1.InputStream
FileOutputStream
2.OutputStream:字节输出流对象
FileOutputStream
不需要使用flash()
字符流的抽象基类(两个顶层父类):这些体系的子类都以父类名作为后缀。
缓冲区char
1.Reader(读-输入)
在创建读取对象时,必须明确被读取的文件,一定要确定文件是存在的
FileReader fr = new FileReader("dome.txt");
//用Reader中read方法读取字符
fr.read();
fr.read(char []);
2.Writer(写)输出)
如果构造函数中加入true,可以实现对文件进行续写
FileWriter fw = new FileWriter("dome.txt",true);
FileWriter fw = new FileWriter("dome.txt");
fw.writer("aaa");
//数据会写入到临时存储的缓冲区中
//运行刷新,数据才会写入到目标文件中
fw.flush();
//关闭流,关闭资源,在关闭前会先调用flush刷新缓冲中的数据到目标文件
fw.close(); //!!!!!!!!!!!!!!
字符流的缓冲区:缓冲区的出现提高了对数据的读写效率
对应类:
BufferedWriter
newLine()
BufferedReader
readLine():使用读取缓冲区的read方法,将读取到的字符进行缓冲并判断换行标记,
将标记的缓存数据变成字符串返回。
!--LineNumberReader()
.getLineNUmber() 获取行
装饰设计模式:
对一组对象的功能进行增强时,就可以使用该模式进行问题的解决。
装饰和继承都能实现一样的特点:进行功能的扩展增强。