`

java.io.*中的设计模式及总结

阅读更多
知识点一: 四大等级结构

  java语言的i/o库提供了四大等级结构:InputStream,OutputStream,Reader,Writer四个系列的类。InputStream和OutputStream处理8位字节流数据, Reader和Writer处理16位的字符流数据。InputStream和Reader处理输入, OutputStream和Writer处理输出。大家一定要到J2SE文档中看看这四大等级结构的类继承体系。

  除了这四大系列类,i/o库还提供了少数的辅助类,其中比较重要的是InputStreamReader和OutputStreamWriter。InputStreamReader把InputStream适配为Reader, OutputStreamWriter把OutputStream适配为Writer;这样就架起了字节流处理类和字符流处理类间的桥梁。

  您使用i/o库时,只要按以上的规则,到相应的类体系中寻找您需要的类即可。

  知识点二: 适配功能

  java i/o库中的继承不是普通的继承;它的继承模式分为两种,其一就是Adapter模式(具体分析请参见<<java与模式>>一书) 。下面以InputStream类体系为例进行说明。

  InputStream有7个直接子类:ByteArrayInputStream,FileInputStream,PipedInputStream,StringBufferInputStream,FilterInputStream,ObjectInputStream和SequenceInputStream。前四个采用了Adapter模式,如FileInputStream部分代码如下:
Public class FileInputStream extends InputStream
  {
  /* File Descriptor - handle to the open file */
  private FileDescriptor fd;
  public FileInputStream(FileDescriptor fdObj)
  {
   SecurityManager security = System.getSecurityManager();
  if (fdObj == null) {
  throw new NullPointerException();
  }
  if (security != null) {
  security.checkRead(fdObj);
  }
  fd = fdObj;
  }
  //其他代码
  }

 

  可见,FileInputStream继承了InputStream,组合了FileDescriptor,采用的是对象Adapter模式。我们学习i/o库时,主要应该掌握这四个对象Adapter模式的适配源: ByteArrayInputStream的适配源是Byte数组, FileInputStream的适配源是File对象, PipedInputStream的适配源是PipedOutputStream对象, StringBufferInputStream的适配源是String对象。其它三个系列类的学习方法与此相同。

  知识点三: Decorator功能

  InputStream的其它三个直接子类采用的是Decorator模式,<<java与模式>>中描述得比较清楚,其实我们不用管它采用什么模式,看看代码就明白了。 FilterInputStream部分代码如下:
Public class FilterInputStream extends InputStream {
  /**
  * The input stream to be filtered.
 */
  protected InputStream in;
  protected FilterInputStream(InputStream in) {
  this.in = in;
  }
  //其它代码
  }


  
  看清楚没有? FilterInputStream继承了InputStream,也引用了InputStream,而它有四个子类,这就是所谓的Decorator模式。我们暂时可以不管为什么要用Decorator模式,但我们现在应该知道:因为InputStream还有其它的几个子类,所以我们可以将其它子类作为参数来构造FilterInputStream对象!这是我们开发时常用的功能,代码示例如下:

{
  //从密钥文件中读密钥
  SecretKey key=null;
  ObjectInputStream keyFile=new ObjectInputStream(
  new FileInputStream("c:\\安全文件\\对称密钥\\yhb.des"));
  key=(SecretKey)keyFile.readObject();
  keyFile.close();
  }
  
  上面的代码中, ObjectInputStream也是InputStream的子类,也使用了Decorator功能,不过,就算你不懂也不想懂Decorator模式,只要记住本文给出的FilterInputStream 的两段代码即可。

  掌握了以上三点,相信我们已经能够很好的应用java i/o库。

分享到:
评论

相关推荐

    Java.nio 与Java.io比较

    1. **非阻塞模式**:Java.nio支持非阻塞I/O操作,这意味着线程不会因为等待I/O操作完成而被阻塞,从而提高了并发性能。 2. **缓冲区管理**:Java.nio使用缓冲区来存储数据,这比直接操作流更加高效,因为数据可以...

    java.io包讲解

    Java.io包的核心设计思想是以流(Stream)为基础,通过不同的流类型来处理各种数据读写需求。 #### 二、Java IO流的基本概念 Java中的流是一种抽象的概念,用于表示数据传输的过程。根据数据传输的方向不同,可以...

    使用JAVA.IO流线程的JAVA课设项目万年历记事本

    6. **设计模式**: - 项目可能应用了单例模式来创建全局唯一的日历或记事本服务。 - 工厂模式可能用于创建不同类型的记事本条目或提醒对象。 - 观察者模式可能用于实时更新用户界面,当记事本内容或提醒状态改变...

    java.io包详细解说

    Decorator模式是一种设计模式,它允许我们在运行时向对象添加新的行为或责任,而无需修改该对象的源代码。在Java IO中,Decorator模式主要体现在各种InputStream、OutputStream、Reader和Writer类的使用上。例如,当...

    Java 设计模式.zip

    Java设计模式是软件开发中的重要概念,它是一种在特定情境下解决常见问题的经验总结和最佳实践。这个开源项目"Java 设计模式.zip"显然是一个Java编程语言实现的设计模式集合,旨在帮助开发者理解和应用这些模式。...

    java.io的吐血实用例子

    在Java编程语言中,`java.io`包是用于输入/输出(I/O)操作的基础部分,包含了许多类和接口,使得开发者能够处理数据流、字符流、对象序列化、磁盘文件以及网络连接等任务。本篇文章将深入探讨`java.io`包中的关键概念...

    JAVA-IO详解.txt

    Java IO的设计遵循了面向对象的原则,并提供了丰富的接口来满足各种不同的需求。 #### 二、字节流(Byte Stream) 字节流是Java中最基本的数据传输方式之一,适用于所有类型的数据传输,包括文本和二进制数据。...

    Java的23种设计模式百度云下载链接.rar

    Java的23种设计模式是软件工程中非常重要的概念,它们是解决常见编程问题的成熟解决方案,被广泛应用于各种复杂的软件开发中。设计模式不是具体的代码或库,而是一种通用的、可重用的设计方案,它描述了在特定上下文...

    IO流所涉及到的Decorator设计模式

    **Decorator设计模式**: Decorator模式的核心思想是装饰者类与被装饰类有相同的接口,它包装了一个对象,并且可以增加或修改该对象的行为。这种模式避免了对原有类进行大量修改,保持了代码的开放性和封闭性。在...

    设计模式java 版本

    在Java中,设计模式尤其重要,因为它们有助于创建可维护、可扩展且高效的代码。本资料包含23种经典设计模式的Java实现,这些模式都是基于面向对象原则的。 1. **单例模式**:确保一个类只有一个实例,并提供一个...

    Java_IO完全总结

    Java IO系统是Java平台标准库中的一个重要组成部分,主要用于处理输入输出操作。Java IO系统主要包括两个包:`java.io`和`java.nio`(New IO),其中`java.io`提供了一系列基于流的I/O操作接口与实现类,而`java.nio...

    JAVA设计模式

    **JAVA设计模式** 在软件工程领域,设计模式是一种在特定情境下解决问题的可复用解决方案。它们是经验的总结,代表了在特定上下文中被广泛接受的、经过时间考验的最佳实践。Java设计模式是面向对象编程中的一种重要...

    设计模式Java版.rar

    "设计模式Java版"的压缩包文件很可能包含了关于如何在Java编程环境中应用各种设计模式的详细资料。 1. **单例模式**:确保一个类只有一个实例,并提供全局访问点。在Java中,可以通过饿汉式(静态常量)和懒汉式...

    java的设计模式 《设计模式-java语言中的应用.pdf》

    《设计模式——Java语言中的应用》这本书深入探讨了如何在Java中有效地运用这些模式。 1. **单例模式**:确保一个类只有一个实例,并提供全局访问点。在Java中,可以通过双重检查锁定(Double-Checked Locking)或...

    java设计模式(源代码).rar

    Java设计模式是软件开发中的一种最佳实践,它提供了一套经过时间验证的解决方案,用于解决在构建可维护、可扩展的软件系统时遇到的常见问题。这个压缩包“java设计模式(源代码).rar”显然包含了用Java语言实现的...

    100.Recipes.for.Programming.Java.Learn.Java.Today

    8. **设计模式**:介绍常见的设计模式,如单例、工厂、观察者、装饰器等,以提高代码的可维护性和复用性。 9. **函数式编程**:Java 8引入了Lambda表达式和Stream API,使函数式编程成为可能,这可能会是书中的一...

    JAVA常见的设计模式+源码+ppt+pdf

    设计模式并不是特定的代码或库,而是一种在特定情境下如何组织和构建代码的经验总结。以下是对"JAVA常见的设计模式"的详细解析: 1. **单例模式**:确保一个类只有一个实例,并提供全局访问点。单例模式常用于配置...

    java jdk io包类详解

    ### Java JDK IO包类详解 ...此外,通过理解装饰者模式的应用,我们可以更好地设计灵活可扩展的系统架构。 总之,`java.io`包是Java编程语言的重要组成部分,对于任何想要深入理解Java平台的开发者来说都至关重要。

    java 的IO流操作

    在Java中,IO流被设计为处理各种数据源和目的地,包括文件、网络连接、内存缓冲区等。IO流分为两大类:输入流(Input Stream)用于读取数据,输出流(Output Stream)用于写入数据。这两类流又根据处理的数据类型...

    java23种设计模式

    Java设计模式是软件开发中的重要概念,它是一种在特定情境下解决问题的经验总结,可以提高代码的可重用性、可维护性和灵活性。本资源包含23种经典的设计模式的Java实现,是Java开发者深入理解设计模式的良好参考资料...

Global site tag (gtag.js) - Google Analytics