IO流原理及流的分类

1. Java IO原理

  • Java程序中,对于数据的输入/输出操作以“流(stream)” 的方式进行,可以看做是一种数据的流动。

    image-20220503123117300

  • I/O流中的I/O是Input/Output的缩写, I/O技术是非常实用的技术,用于处理设备之间的数据传输。如读/写文件,网络通讯等。

    • 输入input:读取外部数据(磁盘、光盘等存储设备的数据)到程序(内存)中。

    • 输出output:将程序(内存)数据输出到磁盘、光盘等存储设备中。

image-20220412224700133

2. 流的分类

java.io包下提供了各种“流”类和接口,用以获取不同种类的数据,并通过标准的方法输入或输出数据。

  • 按数据的流向不同分为:输入流输出流

    • 输入流 :把数据从其他设备上读取到内存中的流。

      • 以InputStream、Reader结尾
    • 输出流 :把数据从内存 中写出到其他设备上的流。

      • 以OutputStream、Writer结尾
  • 按操作数据单位的不同分为:字节流(8bit)字符流(16bit)

    • 字节流 :以字节为单位,读写数据的流。

      • 以InputStream、OutputStream结尾
    • 字符流 :以字符为单位,读写数据的流。

      • 以Reader、Writer结尾
  • 根据IO流的角色不同分为:节点流处理流

    • 节点流:直接从数据源或目的地读写数据

      image-20220412230745170

    • 处理流:不直接连接到数据源或目的地,而是“连接”在已存在的流(节点流或处理流)之上,通过对数据的处理为程序提供更为强大的读写功能。

      image-20220412230751461

小结:图解

image-20220412225253349

3. 流的API

  • Java的IO流共涉及40多个类,实际上非常规则,都是从如下4个抽象基类派生的。
(抽象基类) 输入流 输出流
字节流 InputStream OutputStream
字符流 Reader Writer
  • 由这四个类派生出来的子类名称都是以其父类名作为子类名后缀。

image-20220412230501953

常用的节点流:

  • 文件流: FileInputStream、FileOutputStrean、FileReader、FileWriter

  • 字节/字符数组流: ByteArrayInputStream、ByteArrayOutputStream、CharArrayReader、CharArrayWriter

    • 对数组进行处理的节点流(对应的不再是文件,而是内存中的一个数组)。

常用处理流:

  • 缓冲流:BufferedInputStream、BufferedOutputStream、BufferedReader、BufferedWriter

    • 作用:增加缓冲功能,避免频繁读写硬盘,进而提升读写效率。
  • 转换流:InputStreamReader、OutputStreamReader

    • 作用:实现字节流和字符流之间的转换。
  • 对象流:ObjectInputStream、ObjectOutputStream

    • 作用:提供直接读写Java对象功能
Java基础

java.io.File类的使用

2025-8-18 15:00:00

Java基础

节点流之一:FileReader-FileWriter

2025-8-20 15:00:00

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
有新私信 私信列表
搜索