I/O流 && 装饰者模式
来源:互联网 发布:淘宝专业产品拍摄教程 编辑:程序博客网 时间:2024/06/04 23:34
Input/Output
输入来源:文件、键盘、触摸屏、网络。。。
输出目的:文件、屏幕、打印机、网络。。。分类
- 输入流/输出流
- 字节流/字符流
- 节点流/处理流
- 字节流
- 核心类
InputStream(abstract)<–FileInputStream
OutputStream(abstract)<–FileOutputStream - 核心方法:
InputStream:int read(byte [] b, int off, int len)
,返回值是读取数据的数量
OutputStream:void write(byte [] b, int off, int len)
//off = offside 读写偏移量
//len = length 读写长度
- 核心类
- 字符流
- 核心类
Reader(abstract) <– FileReader
Writer(abstract) <– FileWriter - 核心方法
Reader:int read(char [] c, int off, int len)
Writer:void write(char [] c, int off, int len)
- 核心类
- 装饰者模式
e.g.
实现这种含有多维交叉属性的类,可以用装饰者模式
class AWorker implements Worker { private Worker worker; public AWorker(Worker worker) { this.worker = worker; } public void doSomeWork() { //AWorker特有功能的操作逻辑 worker.doSomeWork(); }}class Test { public static void main(String [] args) { Plumber plumber = new Plumber(); AWorker aWorker = new AWorker(plumber); aWorker.doSomeWork(); }}
即实现了A公司的水管工的实现过程。
6.节点流/处理流
- 节点流:可以从或向一个特定的地方(节点)读写数据(如FileReader);
- 处理流:是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写(如BufferedReader)。
处理流的构造方法总是要带一个其他的流对象做参数。一个流对象经过其他流的多次包装,称为流的链接。
从装饰者模式的角度来看,
节点流就是被装饰者,如FileReader;
处理流就是装饰者,如BufferedReader。
装饰者是给被装饰者添加新的功能
即处理流就是给节点流增加新的功能
像BufferedReader其中就有个readLine()方法给了FileReader一行一行读取的功能,并把读取到的信息通过String类型返回回来,即public String readLine()
e.g.:
class Test { public static void main(String [] args) { FileReader fr = null; BufferedReader br = null; try{ fr = new FileReader("e:/src/from.txt"); br = new BufferedReader(fr); String line = null; while(true) { line = br.readLine(); if ( line == null) { break; } System.out.println(line); } } catch(IOException e){ e.printStackTrace(); } finally{ try{ br.close(); //只需要关闭处理流BufferedReader而不用关闭节点流FileReader,因为关闭处理流时会自动关闭里面的节点流 } catch(IOException e){ e.printStackTrace(); } } }}
- 常用节点流:
- 文 件:FileInputStream、FileOutputStream、FileReader、FileWriter
- 字符串:StringReader、StringWriter
- 数 组:ByteArrayInputStream、ByteArrayOutputStream、CharArrayReader、CharArrayWriter
- 管 道:PipedInputStream、PipedOutputStream、PipedReaderPipedWriter
- 父 类:InputStream、OutputStream、Reader、Writer
- 常用处理流:
- 缓冲流:增加缓冲功能,避免频繁读写硬盘。
BufferedInputStream、BufferedOutputStream、BufferedReader、BufferedWriter - 转换流:实现字节流和字符流之间的转换。
InputStreamReader、OutputStreamWriter - 数据流:提供将基础数据类型写入到文件中,或者读取出来。
DataInputStream、DataOutputStream 等
- 缓冲流:增加缓冲功能,避免频繁读写硬盘。
0 0
- I/O流 && 装饰者模式
- java I/O之装饰者模式
- 装饰模式(I/O流)
- Java I/O装饰模式
- I/O流--2(字符流,装饰设计模式)
- 装饰者模式在Java I/O中的应用
- 设计模式之装饰者模式(二)---java中的装饰者I/O结构
- JDK中的装饰模式:Java I/O
- 装饰模式和I/O分析
- java I/O之装饰设计模式
- java设计模式之装饰模式(在i/o流中的应用)
- 谈谈对java I/O中装饰者模式的理解
- 由装饰者模式来深入理解Java I/O整体框架
- 黑马程序员java基础篇----由I/O流到装饰模式
- 装饰模式在Java I/O库中的应用
- Java I/O编程 装饰设计模式及应用
- java I/O系统(2)-装饰器模式
- Java8 I/O源码-FilterInputStream、FilterOutputStream与装饰器模式
- springMVC 页面传入日期报错问题处理:org.springframework.validation.BindException: org.springframework.validation.
- 一个老鸟发的公司内部整理的 Android 学习路线图 Markdown 版本
- [AngularJS面面观] 7. scope继承与digest循环 - scope树结构的遍历
- 部署与管理ZooKeeper(转)
- 基数排序
- I/O流 && 装饰者模式
- TCPdump抓包命令详解
- 在线api文档
- 我的数据分析工作内容
- Tomcat8 console控制台不正常显示中文
- 第15周项目2:洗牌
- ZooKeeper典型应用场景(转)
- POJ-1276 Cash Machine(经典多重背包)
- 解决Xcode 9.2系统真机测试时出现 could not find developer disk image问题