图1 http://blog.sina.com.cn/s/blog_855ce96b0100vr7r.html
流是一个很形象的概念,当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或是网络连接。类似的,当程序需要写入数据的时候,就会开启一个通向目的地的流。这时候你就可以想象数据好像在这其中“流”动一样.
总体来说,IO可以分为字节流和字符流,不同在于字符流由字节流包装而来,在IO读入之后经过JVM处理,把字节流转换成字符流。而字符流的字符采用哪种字符编码实现由JVM默认编码决定。 而每个流都分输入和输出,所以,总体来说,IO有四个顶层类:
InputStream
OutputStream
Reader
Writer
而作为机器级别于机器直接交互的则是字节流:
InputStream
OutputStream
以IO的中间类,进行字节流到字符流的转换过渡,通常可作为字符流类的构造参数,可指定编码:
InputStreamReader
OutputStreamWriter
而字节流和字符流的缓冲容器来看有byte和char之分,所以派生出:
ByteArrayInputStream
ByteArrayOutputStream
CharArrayInputStream
CharArrayOutputStream
以上类只是表示流的表示形式,而在传输形式上还表现为是否有缓冲。所以,可以派生出子类为可缓冲类:
BufferInputStream
BufferOutputStream
BufferReader
BufferWriter
每一个顶层类都有对目录文件(File)的支持:
FileInputStream
FileOutputStream
FileReader
FileWriter
在Java中,一个强大的功能就是可以对对象进行序列化,转成二进制文件输出,也就是字节流输出而不是字符流输出,所以有顶层的
InputStream和OutputStream派生类:
ObjectInputStream
ObjectOutputStream
流包括了节点流和过滤流,注意的是过滤流,可在读写的同时对数据进行操作,并且实现了同步操作,顶层过滤流类:
FilterInputStream
FilterOutputStream
其子类则在其基础上,对节点流进行封装,常见子类有:
BufferInputStream BufferOutputStream
DataInputStream DataOutputStream
LineNumberInputStream PrintStream
可参考子类的构造方法。
以上IO操作几乎就是把流装载到内存中,对其进行操作的时候是顺序读写,而需要随机读写时:
RandomAccessFile
从整个类框架的结构实现的接口来看,顶层类:
InputStream implements Closable,
OutputStreamimplements Closable, Flushable
Reader implements Closable, Readable
Writer implements Closable, Flushable, Appendable
各个接口方法:
Closable:close();
Flushable: flush();
Readable: read(CharBuffer cb);
Appendable:append();
从IO类使用时的规则来看,实现这些方法就是很自然的了,也是必须要实现的。如:流使用完必须关闭,流输出前必须刷新。
注意的是,这四个顶层类都没有实现Serializable接口。
分享到:
相关推荐
文件名"dd16b88f-d8ed-3378-b8a6-1ba319c0ea27.gif"和"eximg.jpeg"可能代表了这个Java IO结构图的图片文件,可以帮助读者直观地理解这个复杂的体系。 总之,Java IO系统为开发者提供了强大而灵活的工具来处理输入...
本文将通过分析一张清晰明了的Java IO类层次图,详细介绍Java IO体系中的主要类及其关系。 #### 二、Java IO 类层次结构详解 ##### 2.1 字节流类层次结构 Java IO中的字节流类主要分为两大类:`InputStream`和`...
例如,javaio.bmp和javaio2.bmp可能是两张展示IO框架图的图片,其中详细描绘了不同类之间的继承关系和使用场景,帮助开发者更好地理解和掌握Java IO系统。 总结一下,Java IO框架是Java平台不可或缺的一部分,它为...
其次,IO结构图是关于Java输入/输出系统的一种可视化表示。Java的IO库提供了丰富的类和接口,如InputStream、OutputStream、Reader、Writer、File、BufferedReader等,它们支持对文件、网络、内存等不同来源的数据...
"IO流结构图_io_java_思维导图_" 提供了一个清晰的可视化工具,帮助开发者理解这一复杂主题。 首先,让我们了解一下什么是IO流。IO流是Java中的一个抽象概念,它将数据传输过程形象化为水流,分为输入流(Input ...
Java IO流体系继承结构图 Java IO流体系继承结构图是 Java 语言中 Input/Output 操作的核心部分,它们都是从基类 InputStream 和 OutputStream 继承而来的。Java IO流体系继承结构图可以分为两大部分:Reader-...
#### 五、Java IO 流类图结构 Java IO流体系中,有几个核心的抽象基类,包括`InputStream`和`OutputStream`,它们是所有其他具体输入输出流类的基类。此外,还有`Reader`和`Writer`作为字符流的基类。 1. **输入...
Java的IO流体系是Java平台的核心特性之一,用于处理数据的输入和输出。这个体系结构设计得相当丰富和灵活,可以适应多种不同的场景。我们主要从两个方面来理解这个体系:对称性质和处理器模式。 首先,IO流的对称...
Java 体系结构图是理解Java编程语言及其生态系统的关键工具,尤其对于初学者而言,它能够清晰地展现Java的各个组成部分以及它们之间的关系。这个压缩包包含的“体系结构图”很可能是以图形形式展示了Java的核心概念...
Java IO流(包含类之间的关系图) Java IO流是Java语言中用于输入/输出操作的基础组件,涵盖了字节流和字符流两大类别。了解IO流的类之间的关系图是初学者学习Java IO流的基础。 字节流 字节流是Java IO流中最...
### 深入分析Java IO的工作机制 #### 一、引言 在现代软件开发中,输入/输出(Input/Output,简称IO)是至关重要的一个环节,它不仅关乎着程序与外部世界的交互,更是影响应用程序性能的关键因素之一。随着大数据...
2、常用21个IO流:FileWriter、FileReader、...3、JAVA IO流经典代码示例,示例从易到难。代码功能涉及字节、字符、字符串、文本文件、图片、音频、视频。演示错误用法和经典用法。 4、代码的结构可查看README文件。
分析Java常用IO流,包括InputStream、OutputStream、FileInputStream、FileOutputStream、BufferedInputStream、BufferedOutputStream、Reader、Writer、InputStreamReader、OutputStreamWriter、FileReader、...
#### 二、Java IO体系结构 Java IO系统的类库主要分为两大块:字节流和字符流。 1. **字节流**:基于8位字节的数据流。 - `InputStream`:所有字节输入流的超类。 - `OutputStream`:所有字节输出流的超类。 2. ...
### Java IO详解 #### 1. 什么是IO 在计算机科学中,IO(Input/...理解Java IO的基本原理和类结构对于开发高效稳定的Java应用程序至关重要。通过合理选择和组合不同的流类,开发者可以轻松实现各种复杂的IO功能。
Java的IO系统是Java编程中的核心部分,它允许程序与外部世界进行数据交换,包括读取文件、写入文件、网络通信以及设备交互等。理解并掌握Java的IO系统对于任何Java开发者,尤其是新手,都是至关重要的。在这个实例...
4. **try-with-resources** 结构:在Java 7及以上版本,可以使用此结构自动关闭流,避免资源泄露。 5. **IOException**:IO操作可能会出现错误,如文件不存在或无法访问,因此需要捕获并处理IOException。 6. **...
* 掌握Java的基本语法,包括变量、数据类型、运算符、控制结构、方法、数组等。 * 熟悉使用Java的基本数据类型,例如int、double、String等。 * 了解Java的运算符优先级和associativity。 二、流程控制 * 理解Java...
"关于java知识结构图"提供了一种视觉化的学习资源,帮助初学者更好地理解和掌握Java的核心概念。以下是对Java知识结构的详细解读: 1. **基础语法**:Java的基础语法包括变量、数据类型、运算符、流程控制(如if...