先看一段代码,查看其中涉及到的模式
public void testInputStreamReader() throws Exception {
private static final String SEPARATOR = File.separator;
File file = new File("e:" + SEPARATOR + "io" + SEPARATOR + "test.txt");
//BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
// 备注上面这个初始化过程就是多次使用包装来完成的,不推荐这么写,会让新手看不懂。
//1、获得子节输入流
FileInputStream fileInputStream=new FileInputStream(file);
//2、构造转换流(是继承Reader的)
InputStreamReader inputStreamReader=new InputStreamReader(fileInputStream);
//3、 构造缓冲字符流
BufferedReader bufferedReader=new BufferedReader(inputStreamReader);
//备注1、2两步骤体现出了适配器模式
//2步骤体现了InputStreamReader类具有将子节输入流转换为字符输入流的功能
//2、3两步骤体现了装饰模式(wrapper包装模式)
}
由于InputStream是字节流不能享受到字符流读取字符那么便捷的功能,因此借助
InputStreamReader将其转为Reader子类,因此可以拥有便捷操作文本文件方法。
OutputStream同理。
适配器模式
//TODO
将InputStream字节流包装为BufferedReader过程就装饰的过程。一开始
InputStream只有read一个字节的方法,包装为Reader之后拥有read一个字符的功
能,在包装成BufferedReader之后就拥有read一行字符串功能。OutputStream同理
装饰模式
//TODO
java io流操作对于新手来说可能看到有那么多接口、抽象类、和类可能会不知道从何下
手,我个人的见解是理解好面向对象(对IO流接口、类的层次结构理清楚)、弄清楚源和
目标(输入和输出方向)、以及装饰和适配器模式那么掌握好io流操作并不会很难。相比
于并发而言io算容易的哈。