IO流基本认识

1.是什么

关于Java中的IO流(输入/输出流),它们是用来处理输入和输出操作的一种机制。IO流主要分为两大类:字节流(Byte Streams)和字符流(Character Streams)。以下是关于这两类流的基本认识和例子:


字节流(Byte Streams)

字节流用于以字节为单位进行读写操作,适合于处理二进制数据。

InputStream 和 OutputStream
  • InputStream 是所有输入字节流的超类,用于读取字节。
  • OutputStream 是所有输出字节流的超类,用于写入字节。
例子:使用 FileInputStream 和 FileOutputStream 读写文件
java 复制代码
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class ByteStreamExample {
    public static void main(String[] args) {
        // 使用 FileInputStream 读取文件内容
        try (FileInputStream fis = new FileInputStream("input.txt")) {
            int b;
            while ((b = fis.read()) != -1) {
                System.out.print((char) b); // 将读取的字节转换为字符并打印
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

        // 使用 FileOutputStream 写入文件
        try (FileOutputStream fos = new FileOutputStream("output.txt")) {
            String message = "Hello, World!";
            byte[] bytes = message.getBytes(); // 将字符串转换为字节
            fos.write(bytes); // 将字节写入文件
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

字符流(Character Streams)

字符流用于以字符为单位进行读写操作,适合于处理文本数据。在处理字符流时,会考虑字符编码的问题。

Reader 和 Writer
  • Reader 是所有读取字符流的超类。
  • Writer 是所有写入字符流的超类。
例子:使用 FileReader 和 FileWriter 读写文本文件
java 复制代码
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class CharStreamExample {
    public static void main(String[] args) {
        // 使用 FileReader 读取文本文件内容
        try (FileReader fr = new FileReader("input.txt")) {
            int c;
            while ((c = fr.read()) != -1) {
                System.out.print((char) c); // 打印读取的字符
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

        // 使用 FileWriter 写入文本文件
        try (FileWriter fw = new FileWriter("output.txt")) {
            String message = "Hello, World!";
            fw.write(message); // 写入字符串到文件
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

在上述例子中,FileInputStreamFileOutputStream 是字节流,用于读取和写入原始字节。而 FileReaderFileWriter 是字符流,用于读取和写入字符。在处理文本文件时,通常推荐使用字符流,因为它们可以更好地处理字符编码问题。当处理二进制文件,如图像或音频文件时,则应使用字节流。

需要注意的是,在Java中,所有的IO操作都有可能抛出IOException,因此通常需要使用try-catch块来处理异常。另外,为了确保资源在使用后被正确关闭,推荐使用try-with-resources语句,它会在语句块执行完毕后自动关闭实现了AutoCloseable接口的资源。

相关推荐
LuminousCPP25 分钟前
数据结构 - 线性表第四篇:C 语言通讯录优化升级全记录(踩坑 + 思考)
c语言·开发语言·数据结构·经验分享·笔记·学习
web3.088899935 分钟前
1688 图搜接口(item_search_img / 拍立淘) 接入方法
开发语言·python
德思特42 分钟前
从 Dify 配置页理解 RAG 的重要参数
java·人工智能·llm·dify·rag
YOU OU1 小时前
Spring IoC&DI
java·数据库·spring
один but you1 小时前
从可变参数到 emplace:现代 C++ 性能优化的核心组合
java·开发语言
是码龙不是码农2 小时前
ThreadPoolExecutor 7 个核心参数详解
java·线程池·threadpool
这是程序猿2 小时前
Spring Boot自动配置详解
java·大数据·前端
MY_TEUCK2 小时前
【Java 后端 | Nacos 注册中心】微服务治理原理、选型与注册发现实战
java·开发语言·微服务
测试员周周2 小时前
【Appium 系列】第13节-混合测试执行器 — API + UI 的协同执行
开发语言·人工智能·python·功能测试·ui·appium·pytest
光泽雨3 小时前
c#中的Type类型
开发语言·前端