简介:本文是史上最全面的JAVA IO流教学第一篇,涵盖IO流核心概念、分类体系、应用场景及实战技巧,附赠精心设计的IO脑图,助力开发者系统掌握IO流知识。
IO流(Input/Output Stream)是JAVA中处理数据输入输出的核心机制,通过”流”的概念实现内存与外部设备(如文件、网络、控制台等)的数据交互。其本质是将数据视为连续的字节序列,通过管道式传输完成读写操作。
关键特性:
JAVA IO流采用四层架构设计:
抽象基类层│── InputStream/OutputStream(字节流)│── Reader/Writer(字符流)│装饰器层│── FilterInputStream/FilterOutputStream│── FilterReader/FilterWriter│节点流层│── FileInputStream/FileOutputStream│── BufferedReader/BufferedWriter│── ...│处理流层│── BufferedInputStream/BufferedOutputStream│── DataInputStream/DataOutputStream│── ObjectInputStream/ObjectOutputStream
核心类:
典型应用场景:
// 文件复制示例(字节流)try (InputStream in = new FileInputStream("source.txt");OutputStream out = new FileOutputStream("target.txt")) {byte[] buffer = new byte[1024];int length;while ((length = in.read(buffer)) != -1) {out.write(buffer, 0, length);}} catch (IOException e) {e.printStackTrace();}
性能优化技巧:
核心类:
编码处理要点:
// 指定编码读取文件try (Reader reader = new InputStreamReader(new FileInputStream("chinese.txt"), "UTF-8")) {char[] buffer = new char[1024];int length;while ((length = reader.read(buffer)) != -1) {System.out.print(new String(buffer, 0, length));}}
字符流优势:
通过装饰器模式组合功能流:
// 带缓冲的加密输出流try (OutputStream fileOut = new FileOutputStream("secret.dat");BufferedOutputStream buffOut = new BufferedOutputStream(fileOut);CipherOutputStream cipherOut = new CipherOutputStream(buffOut, cipher)) {cipherOut.write(encryptedData);}
装饰器组合原则:
虽然本系列重点在传统IO流,但需了解NIO的补充作用:
| 特性 | 传统IO流 | NIO |
|---|---|---|
| 数据单位 | 字节/字符 | 缓冲区(Buffer) |
| 操作模式 | 阻塞式 | 非阻塞/选择器 |
| 适用场景 | 小文件/顺序访问 | 大文件/随机访问 |
优先使用try-with-resources:
// 正确示例try (InputStream is = new FileInputStream("file.txt");OutputStream os = new FileOutputStream("copy.txt")) {// 操作代码} // 自动关闭资源
关闭顺序原则:后开的先关,外层装饰器不需显式关闭
异常处理策略:
缓冲区大小优化:
合并操作:减少系统调用次数
```java
// 低效写法
for (int i = 0; i < 100; i++) {
out.write(data[i]); // 100次系统调用
}
// 高效写法
out.write(data); // 单次系统调用
```
(此处应插入精心设计的脑图,包含以下核心模块)
流分类体系:
核心类关系图:
应用场景矩阵:
| 场景类型 | 推荐流组合 |
|————————|———————————————|
| 小文件复制 | FileInputStream+FileOutputStream |
| 大文本处理 | BufferedReader+FileReader |
| 对象持久化 | ObjectOutputStream+FileOutputStream |
异常处理流程:
脑图使用建议:
本篇作为JAVA IO流系列的首篇,系统梳理了IO流的核心概念、分类体系和应用技巧。通过掌握这些基础知识,开发者能够:
后续篇章将深入探讨:
(附:完整版JAVA IO脑图高清下载链接)