`
tomotoboy
  • 浏览: 162393 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

java输入输出总结

    博客分类:
  • Java
阅读更多
任何java应用程序都要和IO打交道,对IO有一个清新的了解是java程序员最基本的要求,本文主要介绍java.io的设计原理、接口、以及常用的输入输出类。在讲java.io的设计原理之前,先介绍一点与设计模式相关的知识。

Decorator模式
《设计模式》中对Decorator模式的意图是这样描述的:“动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式比生成子类更为灵活[1]。”Decorator模式的工作原理是:“可以创建始于Decorator对象(负责新功能的对象)终于原对象的一个“链”。”

图1:Decorator模式的通用结构图

图1就是Decorator模式的UML图,它通过给对象添加装饰来动态的添加新的功能:
  • Component为组件和装饰的公共父类,它定义了子类必须实现的方法。
  • ConcreteComponent是一个具体的组件类,可以通过给它添加装饰来增加新的功能。
  • Decorator是所有装饰的公共父类,它定义了所有装饰必须实现的方法,同时,它还保存了一个对于Component的引用,以便将用户的请求转发给Component,并可能在转发请求前后执行一些附加的动作。
  • ConcreteDecoratorA和ConcreteDecoratorB是具体的装饰,可以使用它们来装饰具体的Component.

JDK5.0中60多个IO流类组成了四大家族:InputStream,OutputStream,Reader,Writer。     
  • InputStream/OutputStream是对字节序列进行操作的抽象类。
  • Reader/Writer是基于Unicode代码单元进行操作的抽象类。
  • 输入-输出对称性,比如InputStream和OutputStream各自占据Byte流的输入与输出的两个平行的等级结构的根部。而Reader和Writer各自占据Char流的输入与输出的两个平行的等级结构的根部。
  • byte-char对称,InputStream和Reader的子类分别负责Byte和Char流的输入;OutputStream和Writer的子类分别负责Byte和Char流的输出,它们分别形成平行的等级结构。

以InputStream来看看它的设计原理,首先看看其UML类图:

图2:InputStream的UML类图


java因为其令人迷惑的多种流输入及相关的类而令人头疼。在Decorator模式的背景下,我们来重新认识一下其输入类:
  • InputStream——具有读入功能的抽象被装饰器。              
  • AudioInputStream, ByteArrayInputStream, FileInputStream, ObjectInputStream, PipedInputStream, SequenceInputStream, StringBufferInputStream——具有读入功能的具体被装饰器。
  • FilterInputStream ——具备装饰器的抽象意义,所有的装饰器都直接或间接地派生自FilterInputStream。
  • BufferedInputStream,DataInputStream,LineNumberInputStream,PushbackInputStream——具有具体功能的装饰器。

理解了Decorator模式就可以解释为什么Java要求这些对象一个封装在另一个里面——这使程序员能够从可获得的不同的行为中选取任意数量的组合。同理,可解释Output、Writer、Reader。

参考资料:
1.《设计模式解析》第二版:P212~P220
2.JAVA IO 设计模式彻底分析
3.java.io与装饰者模式
  • 大小: 17.9 KB
  • 大小: 38.9 KB
分享到:
评论

相关推荐

    实验9 Java输入输出流.doc

    基础篇有JAVA环境搭建、Java语言基础、方法和数组、面向对象基础、Java常用类、继承与接口、成员访问控制与异常、JavaFX程序设计、Java输入输出流;进阶篇有反射、泛型、注解、网络编程、多线程、序列化、数据库、...

    JAVA输入输出流实验报告

    JAVA中,字节流和字符流的套用,提供IO输入输出的基本语法和步骤

    corejava输入输出流学习总结.pdf

    corejava输入输出流学习总结.pdfcorejava输入输出流学习总结.pdfcorejava输入输出流学习总结.pdfcorejava输入输出流学习总结.pdfcorejava输入输出流学习总结.pdfcorejava输入输出流学习总结.pdfcorejava输入输出流...

    java输入输出语句整理总结.doc

    java输入输出语句整理总结.doc

    java输入输出流 流式输入与输出

    要串行化一个对象,必须与一定的对象输入/输出流联系起来,通过对象输出流将对象状态保存下来,再通过对象输入流将对象状态恢复。 java.io包中,提供了ObjectInputStream和ObjectOutputStream将数据流功能扩展至可...

    java输入输出流

    java输入输出流,总结详细,分类细致,特别适合新手

    JavaIO总结

    有关Java输入输出流的总结有关Java输入输出流的总结有关Java输入输出流的总结

    Java第三十五——三十六讲总结-输入输出流.doc

    小贝程序员生活\课件\java\java人家\Java第三十五——三十六讲总结-输入输出流.doc 小贝程序员生活\课件\java\java人家\Java第三十五——三十六讲总结-输入输出流.doc 小贝程序员生活\课件\java\java人家\Java第三十...

    Java考试前总结(包含io输入输出流/线程/特殊for语句/文件读写的总结)

    里面有我刚开始学习Java时,关于io输入输出流的总结及代码,还有线程的两种实现方法的总结及代码展示,文件的读写展示,还有Java中特殊for语句的展示!供初学者学习参考!

    java输入输出流总结.docx

    java输入输出流总结.pdf

    异常处理与输入输出(java)

    java学习中关于异常的发生、处理等总结。数据的输入输出的总结!

    java输入输出流和反射

    自己总结的java中I/O流和反射总结,有不当之处,望请提出宝贵意见,谢谢!

    达内Java笔记 各种总结

    面向对象技术总结 corejava高级特性总结 接口学习总结 异常和内部类 集合框架学习总结 GUI和AWT事件模型 多线程学习总结 输入输出流学习总结 网络编程学习总结

    实验5 JAVA常用类.doc

    基础篇有JAVA环境搭建、Java语言基础、方法和数组、面向对象基础、Java常用类、继承与接口、成员访问控制与异常、JavaFX程序设计、Java输入输出流;进阶篇有反射、泛型、注解、网络编程、多线程、序列化、数据库、...

    java IO流总结.md

    2.数据的流向:输入流、输出流 3.流的角色:节点流、处理流 节点流:直接从数据源或目的地读写数据 处理流:不直接连接到数据源或目的地,而是“连接”在已存在的流(节点流或处理流)之上,通过对数据的...

    Java基础入门教程 第9章 Java的高级特性(共32页).ppt

    【完整课程列表】 ... Java基础入门教程 第1章 Java 简介...Java基础入门教程 第8章 文件流的输入输出操作(共37页).ppt Java基础入门教程 第9章 Java的高级特性(共32页).ppt jdk api 1.7.chm JDK_API_1_6_zh_CN.CHM

    JAVA IO流缓冲字节流缓冲字符流等流经典代码示例加注释总结.rar

    2、常用21个IO流:FileWriter、FileReader、...3、JAVA IO流经典代码示例,示例从易到难。代码功能涉及字节、字符、字符串、文本文件、图片、音频、视频。演示错误用法和经典用法。 4、代码的结构可查看README文件。

    java oop总结

    Java面向对象编程概述 Java类定义 内部类和继承 继承的使用 异常处理 数组 Java常用类 集合类 泛型化的集合框架 使用Java的输入/输出类 Java GUI和Swing 事件委托模型.....的详细概述

    java实验报告.docx

    实验十 Java 标准输入/输出流的程序设计;文件读/写的程序设计应用 12 实验十一 Java 枚举类型的应用 18 实验十二 Java 集合框架程序设计应用 22 实验十三 Java 反射与注解程序应用 31 实验十四 Java 数据库程序设计...

Global site tag (gtag.js) - Google Analytics