原标题:成都汇智动力-Java I/O的设计模式

Java I/O的设计模式

1、Java I/O的两个对称性

(1)输入-输出对称

InputStream和OutputStream各自占据Byte流的输入和输出的两个平行的等级结构的根部;

Reader和Writer各自占据Char流的输入和输出的两个平行的等级结构的根部。

(2)byte-char对称

InputStream和Reader的子类分别负责Byte和Char流的输入;

OutputStream和Writer的子类分别负责Byte和Char流的输出;

它们分别形成平行的等级结构。

2、Java I/O中有两个设计模式

1、适配器模式

FileInputStream是一个适配器类,FileInputStream继承了InputStream接口,同时持有一个对FileDior的引用。这是将一个FileDior对象适配成InputStrem类型的对象形式的适配器模式。

ByteArrayInputStream继承了InputStream接口,而封装了一个byte数组。换言之,它将一个byte数组适配成InputStream。

InputStreamReader是从InputStream(byte输入流)到(char输入流)Reader的一个适配器。

OutputStreamWriter是从OutputStream到Writer的适配器。

2、装饰者模式

抽象构件(Component)角色:由InputStream扮演。这是一个抽象类,为各种子类型处理器提供统一的接口。

具体构建(Concrete Component)角色:由ByteArrayInputStream、FileInputStream、PipedInputStream以及StringBufferInputStream等原始流处理器扮演。它们实现了抽象构建角色所规定的接口,可以被链接流处理器所装饰。

抽象装饰(Decorator)角色:由FilterInputStream扮演。它实现了InputStream所规定的接口。

具体装饰(Concrete Decorator)角色:由几个类扮演,分别是DataInputStream、BufferedInputStream 以及两个不常用到的类LineNumberInputStream和PushbackInputStream。返回搜狐,查看更多

责任编辑:

java i o设计模式_成都汇智动力-Java I/O的设计模式相关推荐

  1. java singleton 数据清楚_成都汇智动力-java singleton

    原标题:成都汇智动力-java singleton 1.什么是单例模式?单例模式的应用场景? 名称:单例模式 英文名:Singleton 定义:java中单例模式是一种常见的设计模式,单例就是&quo ...

  2. java并发惊群_成都汇智动力-Java并发:其他(总结性的东西)

    原标题:成都汇智动力-Java并发:其他(总结性的东西) Java并发:其他(总结性的东西). 并发中的主要问题 并发基础主要解决的是可见性,有序性和原子性的问题,让不可控的进程/线程变得可以预测,可 ...

  3. java面试题成都_成都汇智动力-java面试——多线程面试题

    原标题:成都汇智动力-java面试--多线程面试题 1.多线程有什么用?发挥多核CPU的优势 防止阻塞 便于建模 2.创建线程的方式继承Thread类 实现Runnable接口 至于哪个好,不用说肯定 ...

  4. java唯一并且有序集合_成都汇智动力-Java集合类详解

    原标题:成都汇智动力-Java集合类详解 java中集合类主要有两大分支: (1)Collection (2)Map Collection接口 一个Collection代表一组Object,即Coll ...

  5. java集合到线程的考试_成都汇智动力-Java SE考试编程题总结

    原标题:成都汇智动力-Java SE考试编程题总结 线程和进程的区别: (1)进程是运行中的程序,拥有自己独立的内存空间和资源; (2)一个进程可以有一个或多个线程组成,且至少有一个线程称为主线程; ...

  6. java runtime异常如何解决_成都汇智动力-Java中常见的RunTime异常及异常详解

    java.lang.ArithmeticException算术条件异常.譬如:整数除零等.java.lang.ArrayIndexOutOfBoundsException数组索引越界异常.当对数组的索 ...

  7. java non-heap_成都汇智动力-Java内存相关

    原标题:成都汇智动力-Java内存相关 Java内存模型 可见性:一个线程对共享变量值的修改,能够及时地被其他线程看到.语言层面上支持两种 synchronized 和 volatile. 共享变量: ...

  8. Java折半二叉树,成都汇智动力-Java实现常用排序算法

    原标题:成都汇智动力-Java实现常用排序算法 排序算法介绍 1. 基本概念 稳定性: 待排序的数列中,若两个元素的值相等 R1 = R2 ,在排序结束之后,元素之间的相对位置没有发生变化,则称排序算 ...

  9. 在服务器中如何获取项目名,成都汇智动力-java获得项目路径

    原标题:成都汇智动力-java获得项目路径 java获得项目路径,在jsp和class文件中调用的相对路径不同. 在jsp里,根目录是WebRoot 在class文件中,根目录是WebRoot/WEB ...

最新文章

  1. deep learning 作業 2.2
  2. 链表实现c语言通讯录管理系统,C++链表实现通讯录管理系统.pdf
  3. C#多线程 我的第一个多线程程序
  4. AtCoder Beginner Contest 131 F - Must Be Rectangular!
  5. ANSYS——固定斜度的变截面变截面的定义、自由耦合和变截面的定义
  6. Visual Studio 2022 预览版2 发布啦
  7. Flutter 饼状图、柱状图、拆线图、Flutter动态饼图、Flutter图表 flutter_echart 开发文档
  8. 微信小程序 - 豆瓣同城
  9. 【02】查询优化的技术范围
  10. python将矩阵顺时针旋转90度_python 二维数组90度旋转的方法
  11. JavaScript从入门到放弃之补充篇
  12. leetcode之字符串中的第一个唯一字符
  13. mysql备份工具命令xtra_mysql xtrabackup备份工具使用
  14. 服务器主板的无线驱动,给因特尔S2600CO服务器主板安装【SAS控制器】驱动
  15. 配置jetson的usb转串口驱动
  16. 使用squid内网代理百度地图
  17. python Beautifulsoup4爬取凡人修仙传仙界篇连载中文章并生成txt
  18. 周末假期,去一趟安化云台山风景区
  19. 结构化思维在产品工作中的应用
  20. arch firefox

热门文章

  1. 做了一个pichome的windows绿色版,解压即用,方便快速测试。
  2. 批量ping IP地址
  3. 计算机右键管理无法访问指定设备,一直出现这个“Windows无法访问指定设备”怎么办?...
  4. 两种技能增长曲线:对数增长曲线(先快后慢)和指数增长曲线(先慢后快)
  5. WiFi(Wireless Fidelity)基础(五)
  6. 计算机编程中的aa是什么意思,output是什么意思 output的例句 编程中output表示输出参数...
  7. 告别Anaconda: Pycharm最简单的通过pip下载python包的方法(没有之一)
  8. flag 60牛牛收集了每种工作的难度和报酬。牛牛选工作的标准是在难度不超过自身能力值的情况下,牛牛选择报酬最高的工作。在牛牛选定了自己的工作后,牛牛的小伙伴们来找牛牛帮忙选工作,
  9. linux 下51单片机开发环境搭建
  10. playbacktask