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流分类内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringBoot 上传文件判空以及格式检验流程

    SpringBoot 上传文件判空以及格式检验流程

    这篇文章主要介绍了SpringBoot 上传文件判空以及格式检验流程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • java8到java15的新功能简介

    java8到java15的新功能简介

    这篇文章主要介绍了java8到java15的新功能的相关资料,帮助大家更好的理解和学习Java,感兴趣的朋友可以了解下
    2020-12-12
  • java虚拟机参数-D、-X和-XX的区别小结

    java虚拟机参数-D、-X和-XX的区别小结

    本文主要介绍了java虚拟机参数-D、-X和-XX的区别小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • Spring AOP实现权限检查的功能

    Spring AOP实现权限检查的功能

    这篇文章主要介绍了Spring AOP实现权限检查的功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • 利用MyBatis进行不同条件的like模糊查询的方法

    利用MyBatis进行不同条件的like模糊查询的方法

    这篇文章主要介绍了利用MyBatis进行不同条件的like模糊查询,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • java实现桌球游戏

    java实现桌球游戏

    这篇文章主要为大家详细介绍了java实现桌球游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-10-10
  • Java设置Access-Control-Allow-Origin允许多域名访问的实现方法

    Java设置Access-Control-Allow-Origin允许多域名访问的实现方法

    这篇文章主要介绍了Java设置Access-Control-Allow-Origin允许多域名访问的实现方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-10-10
  • Java Synchronized锁失败案例及解决方案

    Java Synchronized锁失败案例及解决方案

    这篇文章主要介绍了Java Synchronized锁失败案例及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • jvm类加载器基础解析

    jvm类加载器基础解析

    这篇文章主要介绍了jvm类加载器基础解析,具有一定借鉴价值,需要的朋友可以参考下
    2017-12-12
  • 详解Android系统中的root权限获得原理

    详解Android系统中的root权限获得原理

    这篇文章主要介绍了详解Android系统中的Root权限获得原理,安卓基于Linux,所以原理也相当于Linux中的root用户,需要的朋友可以参考下
    2015-08-08

最新评论