`
tomotoboy
  • 浏览: 166894 次
  • 性别: 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编程中一个非常重要的概念,主要用于数据的读取和写入操作,包括文本文件和二进制文件。在实验9中,主要目的是理解和掌握I/O流的分类,以及如何进行文本和二进制文件的读写。 I/O流在Java中被...

    JAVA输入输出流实验报告

    Java中的输入输出流是程序与外部数据交互的重要方式,它允许我们读取和写入数据到各种来源,如键盘、文件、网络等。在Java中,输入输出流分为两大类:字节流(Byte Stream)和字符流(Character Stream)。本次实验...

    java输入输出处理

    Java输入输出处理是Java编程中的一个关键领域,它涉及到程序与外部世界的数据交换,包括读取数据、写入数据以及管理内存和磁盘之间的数据流动。在Java中,输入输出通常通过流(Stream)的概念来实现,流是数据的双向...

    java输入输出流与文件处理

    ### Java输入输出流与文件处理 #### 重要概念与基础知识 **输入输出流与文件处理**在编程领域占据着核心地位,特别是在Java中,通过`java.io`包提供了丰富的类和接口来支持输入输出操作。这包括从键盘读取用户输入...

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

    Java 输入输出语句整理总结 Java 输入输出语句是 Java 编程语言中最基本也是最重要的部分之一。输入输出语句是指程序与外部世界交互的桥梁,通过输入输出语句,程序可以从外部世界获取数据,并将处理结果输出到外部...

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

    【Java输入输出流详解】 Java输入输出流(Input/Output Stream)是Java平台核心API的重要组成部分,主要用于处理数据的输入和输出。Java的I/O机制是基于流的,即数据以流的形式从一个地方传输到另一个地方。Java的I...

    Java输入输出练习

    Java 输入输出流练习 本练习旨在通过对 Java 输入输出流的实践掌握,提高学生对 Java 编程语言的理解和应用能力。通过这个实验,学生将学习如何使用 Java 语言进行文件输入输出操作,掌握 ObjectInputStream 和 ...

    java代码输入 输出

    根据提供的文件信息,我们可以总结出以下关于Java中的输入输出处理的知识点: ### 1. Java标准输入输出 #### 1.1 标准输入输出概述 - 在Java中,标准输入输出是通过`java.lang.System`类实现的,其中`System.in`...

    Java实现输入输出

    Java 实现输入输出 Java 是一种广泛使用的编程语言,它提供了多种方式来实现输入输出操作。输入输出操作是 Java 编程的基本组成部分,任何一个 Java 程序都需要与用户进行交互,或者与外部系统进行通讯。 Java 提供...

    java输入输出流总结.docx

    这篇文档主要涵盖了Java输入输出流的基本概念、数据流分类、标准数据流、Java.io包中的数据流和文件类以及文件操作类的方法。 1. 数据流的概念: 流是一种数据处理的概念,分为输入流和输出流。在Java中,流可以...

    Java输入输出流

    ### Java输入输出流详解 #### 一、Java IO 概述 在计算机程序设计中,输入输出(Input/Output,简称IO)是非常重要的一个概念。它涉及到程序如何与外部世界进行数据交换,最常见的外部设备包括磁盘存储和网络通信等...

    java输入输出流总结.pdf

    Java 输入输出流是Java编程语言中用于处理数据输入和输出的核心机制。在Java中,输入输出流被设计成一种抽象的概念,允许程序处理各种不同类型的输入源和输出目标,包括文件、网络连接、内存缓冲等。Java.io 包提供...

    JAVA_输入输出及数据库操作.ppt

    总结来说,Java的输入输出机制是通过流的概念实现数据的读写,涵盖从简单的标准输入输出到复杂的文件操作和网络通信。理解这些基本组件和它们之间的关系对于编写高效、健壮的Java程序至关重要。在实际编程中,开发者...

    java中的标准输入输出流

    ### Java中的标准输入输出流知识点详解 #### 一、Java标准I/O介绍 Java提供了丰富的I/O处理机制,包括标准输入输出流、字节流、字符流等多种方式来处理数据的读取和写入。标准输入输出流是Java中非常基础且重要的...

    JavaIO总结

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

    基于Java文件输入输出流实现文件上传下载功能

    基于Java文件输入输出流实现文件上传下载功能 本文将详细介绍基于Java文件输入输出流实现文件上传下载功能的相关知识点,包括文件上传和下载的实现原理、Java文件输入输出流的基础操作、Servlet的使用等。 文件...

    Java的输入输出流.pdf

    总结来说,Java的输入输出流系统是一个强大且灵活的框架,通过不同的流类型组合,可以满足各种复杂的数据传输需求。理解和熟练掌握这一系统对于Java开发者来说至关重要,因为它不仅是进行文件操作的基础,也是实现...

    java上机报告4——Java的输入输出 1

    Java输入输出和泛型编程 一、Java 输入输出 Java 输入输出是指在 Java 程序中读取和写入数据的过程。Java 提供了多种输入输出方式,包括从控制台读取输入、从文件读取输入、从网络读取输入等。同时,Java 也提供了...

    Java输入输出流及文件读写详解

    ### Java 输入输出流及文件读写详解 #### I/O 类体系结构 在Java开发中,输入输出(I/O)操作是非常重要的部分,特别是在处理文件、网络通信等方面。Java的I/O类体系主要位于`java.io`包中,此外还有一些新实现的I...

Global site tag (gtag.js) - Google Analytics