Java复习02 IO流
首先,“IO”在计算机里面代表的是“输入/输出”(Input / Output),简单来说,就是计算机与外部世界进行数据交流的过程。比如,你在键盘上敲字,数据就输入到计算机里了,屏幕上显示出来的东西,就是输出。在Java中,IO流是用来处理这种数据输入和输出的工具。
IO流在Java里面可以分为四个主要类型:字节流(InputStream和OutputStream)、字符流(Reader和Writer)、节点流(Node Streams)和 处理流(Processing Streams)或者叫做包装流(Wrapper Streams)。
1. 字节流:
- InputStream:这是用来读取数据的,比如从文件中读取数据,它是以字节的形式读取的,就像用水管一样,一点一点水(数据)从源头流过来。
- OutputStream:跟InputStream相对,这是用来写数据的,比如把数据写入到一个文件里,也是一字节一字节地写。
2. 字符流:
- Reader:这个是专门用来读取字符的,因为文本文件里的文字,实际上是以字符的形式存储的。Reader就像是专门读书的眼睛,能够一眼一眼地读文字。
- Writer:对应于Reader,Writer是用来写字符的。它就像是在写日记,把你的故事一字一句地记录下来。
3. 节点流:
- 节点流也叫做低级流,它直接与数据的来源或目的地连接。比如,如果数据来自一个文件,那么
FileInputStream
和FileOutputStream
就是节点流,它们直接和文件系统中的文件交互。同样的,FileReader
和FileWriter
是处理文本文件的节点流。 - 可以把节点流想象成水龙头,直接接在水管上的那个出水口,可以直接控制水的流向。
4. 处理流 或者 包装流:
-
处理流是建立在节点流之上的。它们用于对数据进行处理,比如缓冲、格式化、压缩、加密等等。处理流的例子包括
BufferedInputStream
、BufferedOutputStream
、BufferedReader
、BufferedWriter
等。这些流内部使用了节点流,但它们提供了更高级的数据处理功能。 -
处理流就像是一个水滤器或者加热器,水通过水滤器可以过滤掉杂质,通过加热器可以变热,但最终这个水还是要从水龙头出来的,这就是处理流对节点流的包装。
所以,当在处理数据的时候,通常会首先建立一个节点流来和数据源或目的地直接连接,然后再套上一个或多个处理流来提升性能或者功能。这种设计允许我们通过不同的处理流的组合来轻松地扩展功能,而不需要改变已有的节点流。就像是可以根据需要选择不同的滤水器和加热器来处理水质和水温,而不需要每次都去改动整个水管系统。