知识点一: 四大等级结构
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库。
分享到:
相关推荐
1. **非阻塞模式**:Java.nio支持非阻塞I/O操作,这意味着线程不会因为等待I/O操作完成而被阻塞,从而提高了并发性能。 2. **缓冲区管理**:Java.nio使用缓冲区来存储数据,这比直接操作流更加高效,因为数据可以...
Java.io包的核心设计思想是以流(Stream)为基础,通过不同的流类型来处理各种数据读写需求。 #### 二、Java IO流的基本概念 Java中的流是一种抽象的概念,用于表示数据传输的过程。根据数据传输的方向不同,可以...
6. **设计模式**: - 项目可能应用了单例模式来创建全局唯一的日历或记事本服务。 - 工厂模式可能用于创建不同类型的记事本条目或提醒对象。 - 观察者模式可能用于实时更新用户界面,当记事本内容或提醒状态改变...
Decorator模式是一种设计模式,它允许我们在运行时向对象添加新的行为或责任,而无需修改该对象的源代码。在Java IO中,Decorator模式主要体现在各种InputStream、OutputStream、Reader和Writer类的使用上。例如,当...
Java设计模式是软件开发中的重要概念,它是一种在特定情境下解决常见问题的经验总结和最佳实践。这个开源项目"Java 设计模式.zip"显然是一个Java编程语言实现的设计模式集合,旨在帮助开发者理解和应用这些模式。...
在Java编程语言中,`java.io`包是用于输入/输出(I/O)操作的基础部分,包含了许多类和接口,使得开发者能够处理数据流、字符流、对象序列化、磁盘文件以及网络连接等任务。本篇文章将深入探讨`java.io`包中的关键概念...
Java IO的设计遵循了面向对象的原则,并提供了丰富的接口来满足各种不同的需求。 #### 二、字节流(Byte Stream) 字节流是Java中最基本的数据传输方式之一,适用于所有类型的数据传输,包括文本和二进制数据。...
Java的23种设计模式是软件工程中非常重要的概念,它们是解决常见编程问题的成熟解决方案,被广泛应用于各种复杂的软件开发中。设计模式不是具体的代码或库,而是一种通用的、可重用的设计方案,它描述了在特定上下文...
**Decorator设计模式**: Decorator模式的核心思想是装饰者类与被装饰类有相同的接口,它包装了一个对象,并且可以增加或修改该对象的行为。这种模式避免了对原有类进行大量修改,保持了代码的开放性和封闭性。在...
在Java中,设计模式尤其重要,因为它们有助于创建可维护、可扩展且高效的代码。本资料包含23种经典设计模式的Java实现,这些模式都是基于面向对象原则的。 1. **单例模式**:确保一个类只有一个实例,并提供一个...
Java IO系统是Java平台标准库中的一个重要组成部分,主要用于处理输入输出操作。Java IO系统主要包括两个包:`java.io`和`java.nio`(New IO),其中`java.io`提供了一系列基于流的I/O操作接口与实现类,而`java.nio...
**JAVA设计模式** 在软件工程领域,设计模式是一种在特定情境下解决问题的可复用解决方案。它们是经验的总结,代表了在特定上下文中被广泛接受的、经过时间考验的最佳实践。Java设计模式是面向对象编程中的一种重要...
"设计模式Java版"的压缩包文件很可能包含了关于如何在Java编程环境中应用各种设计模式的详细资料。 1. **单例模式**:确保一个类只有一个实例,并提供全局访问点。在Java中,可以通过饿汉式(静态常量)和懒汉式...
《设计模式——Java语言中的应用》这本书深入探讨了如何在Java中有效地运用这些模式。 1. **单例模式**:确保一个类只有一个实例,并提供全局访问点。在Java中,可以通过双重检查锁定(Double-Checked Locking)或...
Java设计模式是软件开发中的一种最佳实践,它提供了一套经过时间验证的解决方案,用于解决在构建可维护、可扩展的软件系统时遇到的常见问题。这个压缩包“java设计模式(源代码).rar”显然包含了用Java语言实现的...
8. **设计模式**:介绍常见的设计模式,如单例、工厂、观察者、装饰器等,以提高代码的可维护性和复用性。 9. **函数式编程**:Java 8引入了Lambda表达式和Stream API,使函数式编程成为可能,这可能会是书中的一...
设计模式并不是特定的代码或库,而是一种在特定情境下如何组织和构建代码的经验总结。以下是对"JAVA常见的设计模式"的详细解析: 1. **单例模式**:确保一个类只有一个实例,并提供全局访问点。单例模式常用于配置...
设计模式是解决常见编程问题的模板,Java开发者应该熟悉常见的设计模式,如单例、工厂、观察者、装饰器、适配器等。这些模式能够提高代码的可读性、可维护性和复用性。 6. **概念区别(概念区别.md)**: 这个...
《JAVA设计模式之禅》是一本深入浅出地讲解JAVA设计模式的书籍,结合了中国的古典故事,使得抽象的设计模式概念变得生动形象,易于理解。设计模式是软件工程中的重要概念,它们是针对常见问题的解决方案,经过时间和...
### Java JDK IO包类详解 ...此外,通过理解装饰者模式的应用,我们可以更好地设计灵活可扩展的系统架构。 总之,`java.io`包是Java编程语言的重要组成部分,对于任何想要深入理解Java平台的开发者来说都至关重要。