关注

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 体系。

转载自CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/2503_91491877/article/details/154334284

评论

赞0

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--