java基础之IO
流就是从一个目的将数据传送到另一个目的,通常传送的地点有以下这些:内存,硬盘,控制台,键盘,套接字网口
IO流分为字节流和字符流。
一、字符流分为Reader(输入流,表示读入)和Writer(输出流,表示写出)
字符流其实底层还是字节传输,只是将若干个字节缓冲存储然后去查找字符映射表(简称码表),对应码表转换成对应的字符。
字符流按照功能能,常用的有以下:
FileReader 读取文件
FileWriter 写出到文件
字符流的缓冲区技术,提高效率
BufferedReader
BufferedWriter
缓冲流实际上是装饰设计模块的一种实现。
当想要对自己已为的对象进行功能增强时,可以定义类,将已为对象传入,基于已有的功能,并提供加强功能!那么自定义的该类就称为装饰类。
装饰类与继承的区别:如果使用继承,将会每个类增加一个子类,使得整个类的体系非常臃肿,而使用装饰模式后,只有对原来的类进行装饰就可
以,而不用增加很多子类。如下面的两个体系,显然右边的更优:
二、节字流
InputStream //字节输入流
OutputStrem //字节输出流
FileInputStream //读入字节 字节是最小的传输单位,中间不需要缓冲,所以不需要刷新,不用调用flush
FileOutputStream //写出字节
例子,使用字节流拷贝一个图片:
字符流与字节流的桥梁,转换流
InputStreamReader //字节流----->字符流 由于字节流没有对应的缓冲流,所以为了使用到缓冲流提高效率,就要将数据转换成字符流。键盘录入System.in是节字流,通常
使用转换流提高效率。
InputStreamWriter //字符流------->字节流
BufferedReader bufr = new BufferedReder(new InputStreamReader(System.in));
BufferedWriter bufw = new BufferedWriter(new OutputStreamReader(System.out));
其他有用的流:打印流 PrintStream, PrintWriter