1.什么是I/O流
在Java编程中,IO流是一种用于处理输入和输出操作的机制。它提供了一种统一的方式来读取和写入数据,在软件研发过程中常用于文件读写,网络通信,特定场景的数据库操作,文本处理等。
流最主要的功能就是输入、输出。
简单理解:
获取txt文本文档中内容到程序中处理叫输入流(Input),将程序处理完的内容写到txt文本文档中叫输出流(Output)。实际就是一个读和写的操作。
2.IO流原理
IO流是基于流的概念,它将数据的输入和输出看作是一个连续的流。数据从一个地方流向另一个地方,流的方向可以是输入(读取数据)或输出(写入数据)。Java中的IO流分为字节流和字符流两种类型,分别用于处理字节数据和字符数据。
IO流的原理是通过流的管道将数据从源头传输到目标地。源头可以是文件、网络连接、内存等,而目标地可以是文件、数据库、网络等。IO流提供了一组丰富的类和方法来实现不同类型的输入和输出操作。
3.IO流的分类
Java中的IO流可以按照数据的类型和流的方向进行分类。
按数据类型分类
- 字节流(Byte Stream):以字节为单位读写数据,适用于处理二进制数据,如图像、音频、视频等。常见的字节流类有InputStream和OutputStream。
- 字符流(Character Stream):以字符为单位读写数据,适用于处理文本数据。字符流会自动进行字符编码和解码,可以处理多国语言字符。常见的字符流类有Reader和Writer。
按流的方向分类
- 输入流(Input Stream):用于读取数据。输入流从数据源读取数据,如文件、网络连接等。常见的输入流类有FileInputStream、ByteArrayInputStream、SocketInputStream等。
- 输出流(Output Stream):用于写入数据。输出流将数据写入到目标地,如文件、数据库、网络等。常见的输出流类有FileOutputStream、ByteArrayOutputStream、SocketOutputStream等。
分类继承结构图如下: