java中IO流分为几类举例详解

 更新时间:2025年12月04日 09:02:19   作者:都是蠢货  
Java中的IO流主要分为输入流和输出流两大类,每类又可以根据数据处理方式的不同细分为多种具体实现,这篇文章主要介绍了java中IO流分为几类的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下

1. 按流的方向划分

  • 输入流(Input Stream):从外部设备(如文件、网络、键盘等)读取数据到程序中,典型抽象类为 InputStream(字节输入流)和 Reader(字符输入流)。
    // 字节输入流(读取二进制文件)
    try (InputStream fis = new FileInputStream("test.jpg")) {
        int byteData;
        while ((byteData = fis.read()) != -1) {
            // 处理单个字节
        }
    }
    
    // 字符输入流(读取文本文件)
    try (Reader reader = new FileReader("text.txt")) {
        int charData;
        while ((charData = reader.read()) != -1) {
            // 处理单个字符
        }
    }
     
    
  • 输出流(Output Stream):从程序将数据写入到外部设备,典型抽象类为 OutputStream(字节输出流)和 Writer(字符输出流)。
    // 字节输出流(写入二进制数据)
    try (OutputStream fos = new FileOutputStream("output.jpg")) {
        byte[] data = getImageData(); // 假设获取字节数据
        fos.write(data);
    }
    
    // 字符输出流(写入文本)
    try (Writer writer = new FileWriter("output.txt")) {
        writer.write("Hello, Java IO!");
    }
     
    

2. 按处理数据的单位划分

  • 字节流:以字节(8 位)为单位处理数据,可处理所有类型的数据(如文本、图片、音频等)。核心抽象类:InputStream(输入)、OutputStream(输出)。
  • 字符流:以字符(16 位,Java 中默认 Unicode 编码)为单位处理数据,仅适合处理文本数据(如.txt文件)。核心抽象类:Reader(输入)、Writer(输出)。

3. 按流的角色划分

  • 节点流(节点流 / 低级流):直接与数据源(如文件、网络 Socket)相连,负责实际的读写操作。例如:FileInputStream(文件字节输入流)、FileReader(文件字符输入流)、ByteArrayInputStream(字节数组输入流)等。
  • 处理流(过滤流 / 高级流):不直接连接数据源,而是包装在其他流(节点流或处理流)之上,用于增强功能(如缓冲、转换、序列化等)。例如:BufferedInputStream(缓冲字节流)、InputStreamReader(字节流转字符流的转换流)、ObjectInputStream(对象输入流)等。
    // 缓冲字节流(处理流+节点流)
    try (InputStream fis = new FileInputStream("largefile.bin");
         BufferedInputStream bis = new BufferedInputStream(fis)) {
        byte[] buffer = new byte[1024];
        int bytesRead;
        while ((bytesRead = bis.read(buffer)) != -1) {
            // 处理缓冲数据
        }
    }
    
    // 缓冲字符流(处理流+节点流)
    try (Reader reader = new FileReader("largefile.txt");
         BufferedReader br = new BufferedReader(reader)) {
        String line;
        while ((line = br.readLine()) != null) {
            // 逐行处理文本
        }
    }
     
    

    总结:Java IO 流的核心分类逻辑是按数据单位(字节 / 字符) 和按流的功能角色(节点 / 处理),在此基础上结合流向形成了完整的 IO 体系。

总结 

到此这篇关于java中IO流分为几类的文章就介绍到这了,更多相关java IO流分类内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java for循环常见优化方法案例详解

    Java for循环常见优化方法案例详解

    这篇文章主要介绍了Java for循环常见优化方法案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • Java对象类型转换实现方式(向上转型与向下转型)

    Java对象类型转换实现方式(向上转型与向下转型)

    文章介绍了Java中的类型转换、继承和对象类型转换的概念,以及向上转型和向下转型的实现方法和注意事项
    2026-02-02
  • springboot项目组引入JMeter的实现步骤

    springboot项目组引入JMeter的实现步骤

    本文主要介绍了springboot项目组引入JMeter的实现步骤,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • Springboot使用slf4j记录日志的方法步骤

    Springboot使用slf4j记录日志的方法步骤

    本文主要介绍了Springboot使用slf4j记录日志的方法步骤,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • java 实现迷宫回溯算法示例详解

    java 实现迷宫回溯算法示例详解

    这篇文章主要介绍了java 实现迷宫回溯算法示例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • Java 实战项目锤炼之嘟嘟健身房管理系统的实现流程

    Java 实战项目锤炼之嘟嘟健身房管理系统的实现流程

    读万卷书不如行万里路,只学书上的理论是远远不够的,只有在实战中才能获得能力的提升,本篇文章手把手带你用java+SSM+jsp+mysql+maven实现一个健身房管理系统,大家可以在过程中查缺补漏,提升水平
    2021-11-11
  • Java中的包、抽象类、接口详解(最新整理)

    Java中的包、抽象类、接口详解(最新整理)

    文章介绍了Java中的包、抽象类、接口以及实现多个接口的概念,包用于组织类,避免命名冲突,抽象类用于定义不能被实例化的类,可以包含抽象方法,接口则定义了一组抽象方法,可以被类实现,实现多个接口可以实现类似多继承的效果,感兴趣的朋友一起看看吧
    2025-02-02
  • Java中的锁分类的详细介绍

    Java中的锁分类的详细介绍

    这篇文章主要介绍了Java中的锁分类的详细介绍,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • Spring中的Sentinel熔断降级详解

    Spring中的Sentinel熔断降级详解

    这篇文章主要介绍了Spring中的Sentinel熔断降级详解,熔断降级是一种保护系统稳定性和可用性的机制,旨在防止故障的扩散和蔓延,提高用户体验和信任度,需要的朋友可以参考下
    2023-09-09
  • SpringMVC之@requestBody的作用及说明

    SpringMVC之@requestBody的作用及说明

    这篇文章主要介绍了SpringMVC之@requestBody的作用及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04

最新评论