0

我最近一直在探索 java.io 包,我一直想知道在哪里可以找到 InputStream 和 OutputStream 中的抽象类所做的确切过程。

我眼花缭乱是因为,至少从源代码来看,核心方法都是抽象的(例如InputStream.read()and OutputStream.write(int b))。我特别关注 close 方法,它们的 javadocs 明确表示它们什么都不做:

关闭此输入流并释放与该流关联的所有系统资源。

close方法InputStream什么都不做。

好吧,输入流显然是写的,而输出流是读的,而且肯定close()要进行刷新和资源释放。

有人能给我一个解释吗?

4

1 回答 1

1

这些类是抽象的,因为这样它们可以很容易地扩展,并且实现类可以使用装饰器模式(如图所示。使用装饰器模式,实现者类可以在运行时添加动态功能。例如:有一个InputStream可以读取文件的文件FileInputStream,可以读取序列化的对象ObjectInputStream。如何做到这一点?

ObjectInputStream ois = new ObjectInputStream(
    new FileInputStream(new File("/path/to/file.dat"));
于 2013-04-30T04:31:21.687 回答