1. IO流基础概念与核心分类
IO流(Input/Output Stream)是Java中处理数据输入输出的核心机制。想象一下城市供水系统——水管如同数据通道,水源是数据源头,水龙头则是输出终端。Java的IO流正是这样一套标准化的"数据管道"系统。
1.1 按数据流向划分
- 输入流:数据从外部流向程序(InputStream/Reader)
- 输出流:数据从程序流向外部(OutputStream/Writer)
我在处理日志分析系统时曾遇到一个典型场景:需要同时读取服务器日志文件(输入流)并将分析结果写入数据库(输出流)。这种双向操作正是IO流的经典应用。
1.2 按数据类型划分
- 字节流:以8位字节为单位(InputStream/OutputStream)
- 适合处理二进制文件:图片、视频、压缩包等
- 示例:
FileInputStream读取PDF文件
- 字符流:以16位字符为单位(Reader/Writer)
- 适合处理文本文件:TXT、CSV、XML等
- 示例:
FileReader读取配置文件
重要提示:处理文本文件时若错误使用字节流,可能导致中文乱码问题。我曾在一个跨国项目中因未统一字符编码(UTF-8与GBK混用)导致系统异常,这个教训值得警惕。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心流类深度解析
2.1 文件操作流家族
java复制// 典型文件拷贝实现(带缓冲的字节流)
try (FileInputStream fis = new FileInputStream("source.zip");
FileOutputStream fos = new FileOutputStream("backup.zip");
BufferedInputStream bis = new BufferedInputStream(fis);
BufferedOutputStream bos = new BufferedOutputStream(fos)) {
byte[] buffer = new byte[8192]; // 8KB缓冲区
int bytesRead;
while ((bytesRe
