IO流
分类
根据流的操作数据的方式来分为字节流和字符流
根据流向可分为输入流和输出流字节流和字符流:
OutputStream/ InputStream
是所有字节输出/输入流的父类
Writer/Reader
是所有字符输出/输入流的父类
流必须关闭!关闭后不可再次写入,不能重复关闭!输入和输出流不是同一个流!
关闭流后不可再次刷新流缓冲或者写入流读取流- 字节流
Writer/Reader
- IO的异常处理
一般在finally()
方法中调用close()
方法,需注意:流必须在try外部定义,因为需要关流 - 字符流的缓冲区(前缀带Buffered)
Buffered不能单独使用,需要传入一个流
装饰设计模式
目的是为了增强某些类的功能,创建一个新类,然后一般在构造方法中将被装饰者作为参数,这个自定义类就是装饰类,这两个类的功能是相似的,但是会对功能做一个增强,装饰类和被装饰类也是一个体系中的类。
装饰和继承的关系
相对于继承来说,降低了类之间的耦合性,且装饰类和被装饰类属于同一体系。字节流
OutputStream/InputStream
写入时需注意只能写入Byte类型的值,所以需要String的getBytes()
方法读取的方法:
- 一个字节一个字节的读取
- 读入一个数组
- 将内容一次性读出
键盘录入:
InputStream i=System.in;转换流
InputStreamReader/OutoutStreamReader
InputStreamReader isr=new InputStremReader(new FileInputStream(“目录”))
如何选择流:
- 确定源和目的,源是数据的来源,目的是数据走到哪
- 确定操作对象是否为纯文本文件