`
默默的小熊
  • 浏览: 232914 次
社区版块
存档分类
最新评论

FilterInputStream源码

 
阅读更多

 

public class FilterInputStream extends InputStream {
	
	//待过滤的输入流
	protected volatile InputStream in;

	protected FilterInputStream(InputStream in) {
		this.in = in;
	}

	public int read() throws IOException {
		return in.read();
	}
	
	public int read(byte b[]) throws IOException {
		return read(b, 0, b.length);
	}

	public int read(byte b[], int off, int len) throws IOException {
		return in.read(b, off, len);
	}
	
	public long skip(long n) throws IOException {
		return in.skip(n);
	}

	public int available() throws IOException {
		return in.available();
	}

	public void close() throws IOException {
		in.close();
	}

	public synchronized void mark(int readlimit) {
		in.mark(readlimit);
	}

	public synchronized void reset() throws IOException {
		in.reset();
	}

	public boolean markSupported() {
		return in.markSupported();
	}
}

    可以发现这个类是相当有趣的,它的构造函数传递进来一个InputStream对象,然后当我们创建一个FilterInputStream对象时,调用它的各种方法,但实际还是原先InputStream的方法。

    但是为什么这么设计呢?

分享到:
评论

相关推荐

    Java中的 FilterInputStream简介_动力节点Java学院整理

    FilterInputStream 的源码中,它继承自 InputStream,并且有一个 protected 的 volatile 变量 in,表示被封装的输入流。它的构造函数 FilterInputStream(InputStream in) 用来初始化这个变量。其他方法,如 read()、...

    文件压缩Java源码

    3. **ZipInputStream**: 这个类继承自`FilterInputStream`,用于从ZIP文件中读取数据。通过创建`ZipInputStream`实例并连接到ZIP文件,我们可以遍历每一个`ZipEntry`,并使用`BufferedInputStream`等辅助类将其内容...

    commons-io-2.4 包含了所有commons-io的jar包和源码

    10. **源码分析**:由于包含源码,开发者可以深入理解Apache Commons IO库的内部工作原理,学习优秀的编程实践,并根据需求进行扩展或定制。 Apache Commons IO 是Java开发中的重要辅助库,它的功能强大且实用,...

    Java 输入输出流 源码

    7. **过滤流**:FilterInputStream、FilterOutputStream、FilterReader和FilterWriter是装饰器模式的应用,用于增强或修改原有流的功能,如DataInputStream和DataOutputStream增加了读写基本数据类型的能力。...

    探寻Java源码中的设计模式

    7. 装饰器模式(Decorator Pattern):装饰器模式动态地给一个对象添加额外的职责,如`java.io.InputStream`和`java.io.FilterInputStream`,后者可以在不改变原有行为的基础上增加新的功能。 8. 桥接模式(Bridge ...

    通过JDK源码学习InputStream详解

    - `FilterInputStream`: 作为其他输入流的基础,提供基本的过滤和装饰功能。 - `BufferedInputStream`: 提供缓冲功能,提高读取效率。 - `DataInputStream`: 支持读取基本数据类型的流。 - `PushbackInputStream`: ...

    用Java实现的解压缩程序实例(含源码)

    - `ZipInputStream` 是一个继承自`FilterInputStream`的类,用于读取ZIP格式的压缩数据流。你可以通过它逐个读取ZIP文件中的条目(entries)。 3. **`ZipEntry` 类**: - `ZipEntry` 表示ZIP文件中的一个条目,...

    commons-io-1.4jar包+源码+文档.rar

    5. 输入/输出过滤:FilterInputStream和FilterOutputStream允许用户自定义数据过滤规则,通过包装现有的输入/输出流,可以添加额外的功能,如压缩、加密等。 6. 线程安全的缓冲流:BufferedInputStream和...

    IO输入输出流源码例子

    - `FilterInputStream`和`FilterOutputStream`作为装饰者模式的实现,可以方便地在已存在的流上添加额外功能。 6. **关闭流** - 使用`close()`方法关闭流,释放系统资源。注意遵循“先开后关”原则,即最后打开的...

    Java中文显示过滤器实例.rar

    在这个实例中,我们可能会看到一个实现了`FilterInputStream`或`FilterOutputStream`的自定义类,这个类会在读取或写入数据时自动处理编码转换,确保中文字符的正确显示。 例如,我们可以创建一个`...

    IO/输入输出

    例如,DataInputStream和DataOutputStream可以进行基本类型的数据读写,FilterInputStream和FilterOutputStream提供了一种扩展流功能的方法。 4. **对象序列化与反序列化**: Java提供了Serializable接口,使得...

    Java I/O 过滤流-带格式的读写操作

    它们通过继承抽象类FilterInputStream或FilterOutputStream来实现这一机制。 1. **基础概念** - **FilterInputStream**:这是所有输入过滤流的基类,它包裹了一个底层的InputStream,并在其上添加了额外的功能。 ...

    Java中对于字节流的读取方式

    它们继承自FilterInputStream和FilterOutputStream,可以在节点流之上使用。 ```java DataInputStream dis = new DataInputStream(new FileInputStream("input.txt")); int value = dis.readInt(); // ... dis....

    Java IO 与 装饰模式

    FilterInputStream是InputStream的抽象装饰类,提供了很多子类如DataInputStream、ObjectInputStream等,它们分别添加了对数据格式化的处理或者对象序列化的能力。同样的,装饰模式也在字符流中应用,如...

    IO流

    2. **FilterInputStream和FilterOutputStream**:这些是装饰者模式的实现,提供对基本字节流的增强功能,如`BufferedInputStream`和`BufferedOutputStream`增加了缓冲,`DataInputStream`和`DataOutputStream`支持...

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

    3. **FilterInputStream** 和 **FilterOutputStream**:这些类是通用的过滤器,可以包装任何InputStream或OutputStream,提供了一些通用的处理方法。 4. **PrintStream**:装饰OutputStream,增加了打印和错误处理的...

    java实用工具(zip)

    它们都继承自`FilterInputStream`和`FilterOutputStream`,可以在处理流数据时进行压缩或解压缩。 5. **创建和写入.zip文件**: 要创建一个新的.zip文件,可以使用`ZipOutputStream`。首先,你需要创建一个`...

    Java中的那些“流”之JAVA基础知识之我的理解8

    在标签中提到的“源码”部分,理解流的工作原理有时需要查看其内部源码,以便优化性能或解决特定问题。例如,了解BufferedReader的readLine()方法如何处理换行符,或者ObjectOutputStream如何序列化对象。 至于...

    commons-io-1.3.2-sources.jar

    《Apache Commons IO 1.3.2 源码解析》 Apache Commons IO 是一个 Java 类库,专门处理输入/输出流操作,提供了一系列实用工具类,极大地简化了 Java I/O 操作。在这个主题中,我们将深入探讨 `commons-io-1.3.2-...

Global site tag (gtag.js) - Google Analytics